4

NSIS のAccessControl プラグインを使用して、レジストリ キーに権限を設定しようとしています。機能していません。インストーラーの実行後、All Users グループにはフル コントロールがありません。

以下にサンプルを作成しました。ここで何か問題がありますか?同じことを達成する別のメカニズムはありますか?また、Everyone グループ S-1-1-0 の数値形式を使用しようとしましたが、「Everyone」はまだ使用していません。

  ; Create the key for local machine settings (could be a 32 bit or 64 bit location)
  SetRegView 32
  WriteRegStr HKLM "SOFTWARE\MyApp" "x" "y"
  SetRegView 64
  WriteRegStr HKLM "SOFTWARE\MyApp" "x" "y"

  ; Give all authenticated users (BUILTIN\Users) full access on the registry key HKEY_LOCAL_MACHINE\Software\MyApp
  SetRegView 32
  AccessControl::GrantOnRegKey HKLM "SOFTWARE\MyApp" "BUILTIN\USERS" "FullAccess"
  SetRegView 64
  AccessControl::GrantOnRegKey HKLM "SOFTWARE\MyApp" "BUILTIN\USERS" "FullAccess"

最初は、2 つのレジストリ ビューを気にしませんでした。しかし、実験の後、WOW6432Node の問題を除外するために、コマンドを 2 倍にしました。必要ないことを願っています。

4

1 に答える 1

4

プラグインで SID を使用する場合の構文は(S-1-....)次のとおりです。

WriteRegStr HKCU "Software\test" hello world
AccessControl::GrantOnRegKey HKCU "Software\test" "(S-1-1-0)" "FullAccess" ; Everyone

ここで SIDのリストを確認できます。

を使用AccessControl::NameToSidして名前を SID に変換できますが、これを行うと、英語以外のシステムでローカライズの問題が発生する可能性があります。

AccessControl::NameToSid "BUILTIN\USERS"
Pop $0
StrCmp $0 "error" +2
AccessControl::GrantOnRegKey HKCU "Software\test" "($0)" "FullAccess"

Machine\Username所有者を変更する場合は、構文も使用できます。

エイリアス(BU)は Unicode バージョンでのみ機能し、Windows バージョンにも依存するため、SID のみを使用することをお勧めします。

于 2013-03-13T22:08:30.610 に答える