2

正常に動作するカスタム インストーラー プログラムがありますが、アプリケーションを更新するたびにユーザーに管理者権限を要求します。この部分をスキップする Windows サービスを作成していますが、Windows サービスはシステムと管理者の権限のみをファイルに与え、ユーザーは新しい更新を実行できません。

これを修正するために私は試みています(ファイルが正しい場所にダウンロード/インストールされた後(Windowsサービス内から、アカウントServiceAccount.LocalSystemがあります)、

FileSecurity access = file.GetAccessControl();
SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
access.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.ReadAndExecute, AccessControlType.Allow));

しかし、設定は有効になりません。ここからどうすればいいですか?

4

2 に答える 2

4

私はそれを考え出した。電話するしかなかったのですが、

file.SetAccessControl(access);

上記の後。どうやら file.GetAccessControl は、変更された権限で file.SetAccessControl を呼び出すまで、ファイルのファイル権限を制御するものではなく、アクセス制御のコピーを返します。

サービスが c:\ProgramData に作成していた別のファイルで発見した別の警告があります。

  • ファイルが書き込まれた後にセットが発生する必要があるということです。セットを事前にファイルに適用しても効果がありません。
于 2011-11-10T18:50:05.410 に答える