Install Shield のUACに関する仕様がひどすぎる件

最新の InstallShield Limited Edition for Microsoft Visual Studio を使って、%ProgramFiles% 配下にアプリケーション、 CommonAppDataFolder にユーザー用データを配置すれば UACの問題はないと思っていました。

ところがですよ!

インストールしてみたところ、CommonAppDataFolder に配置したアプリケーションが開けないんです。
アクセス権見ると、System権限のみで、Administrator ですら書き込みできないという!
いくら新規フォルダ掘って、ファイル配置したからって、インストールした管理者の権限のみのアクセス権設定するとか意味わかんないし、ACLの設定が変更できないとか意味わかんないから!

で、これを解決する方法考えたんだけど、

・サービス起動時にACL書き換える。(システム権限なので)
・カスタムアクションを追加する。

この2つしか思いつかない。

とりあえず、カスタムアクションで対応する方法
cus

インストールとメンテナンスモードでVBSを実行するように設定。

中身はこんな感じ

Set WshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDir = WshShell.expandEnvironmentStrings("%ALLUSERSPROFILE%") & "\MOF\もふシステム\data"
if objFSO.FolderExists(strDir) = False Then
objFSO.CreateFolder(strDir)
End If
strFile = WshShell.expandEnvironmentStrings("%ALLUSERSPROFILE%") & "\MOF\もふシステム"
setPerms = WshShell.expandEnvironmentStrings("%systemRoot%") & "\system32\icacls.exe " & Chr(34) & strFile & Chr(34) & " /grant Everyone:(F) /T"
WshShell.run setPerms

これを試してみたところ、うまく設定できた。

・ω・ 。o (つか、Windows Vista がこの世に出て、何年たってると思うんだ!っていう仕様ですよね )

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です