2

WinFormsアプリのNSISセットアップスクリプト中に、次のCACLSコマンドを使用して、ユーザーグループにサブフォルダーに対する完全な権限を付与します。

Exec 'CACLS "$INSTDIR\SubFolder" /E /T /C /G "Users":F'

したがって、実際には、実行されるCACLSコマンドは次のようになります。

CACLS "c:\Program Files\MyApp\SubFolder" /E /T /C /G "Users":F

次に、Windowsエクスプローラーでフォルダーのアクセス許可を確認すると(フォルダーを右クリックして[プロパティ]を選択し、[セキュリティ]タブに移動します)、正しいアクセス許可がありますが、編集できません。

さらに、[セキュリティの詳細設定]の[詳細設定]ボタンをクリックすると、SubFolderが[親オブジェクト]から[ユーザー]グループのアクセス許可を継承していることがわかりますが、上のフォルダーではないため、その親オブジェクトは何ですか。

CACLSによって追加されたアクセス許可が編集できないのはなぜですか?また、存在しない親オブジェクトから継承されているのはなぜですか?CACLSのオプションを間違って設定したのではないかと思います。

私はWindowsXPを使用しています。

4

2 に答える 2

3

私はそれを理解したと思います:/ G'grant'ではなく/P'replace'を使用するようにCACLSを変更すると、よりうまく機能するように見えました:

CACLS "c:\Program Files\MyApp\SubFolder" /E /T /C /P "Users":F

作成されたオプションは、Windowsエクスプローラーの[セキュリティ]タブで編集できます。

于 2010-06-09T09:24:36.803 に答える
2

NSIS にはパーミッションを設定するためのプラグインがあります。おそらくそれを使用する必要があります (XP Home に があるかどうかは思い出せませんcacls) 。

「ユーザー」の継承されたアクセス許可は、ドライブのルートまたは親フォルダーの親のいずれかの明確な場所から取得する必要があります (高度なセキュリティ ダイアログには、リストに継承された列が必要です)。

于 2010-06-08T19:05:58.560 に答える