以前UAC対策の罠で紹介した方法に重大な欠陥があった。
Microsoftアカウントが関連付けられている場合の「username_000」なる名前に対する対策で、Application DataフォルダのパスにInstallShieldの[LocalAppDataFolder]を設定するよう説明したが、これだとシングルユーザーの利用に限定されてしまう。
例えば「管理ユーザーがインストールして標準ユーザーが使う」ケースは多いと思うが、[LocalAppDataFolder]にApplication Dataを保存するということは、Application Dataのアクセス権はインストールを行う管理ユーザーにしか与えられず、標準ユーザーからはアクセス出来なくなってしまう。
インストール後にアクセスするApplication Dataならば[LocalAppDataFolder]で良いのだが、このケースでは機能しない。
想定するApplication Dataは「All Users」のものでなければならない。
おそらく以下が正解だろう。
[path] datafolder=c:ProgramData
InstallShieldの定義済フォルダーでは[CommonAppDataFolder]となる。
インストール先コンピュータではデフォルトで非表示になっているので「定義済フォルダーを表示」でチェックONにしておこう。
ProgramData配下に配備するApplication Dataのアクセス権はUsers等に適宜設定(フルコントロールとか…)しておきましょう。
InstallShield[アクセス許可]
ドメイン:%USERDOMAIN
ユーザー:ユーザー
※カレントコンピュータもしくはドメインのUsersグループにアクセス権を与える指定
(非常に分り難い)
これを怠るとVirtualStoreに飛ばされます。
(知らずに少々嵌りました…。)