2013-04-15 77 views
2

我想給nsis上的註冊表提供完整的權限,但它不起作用。以下是一個示例代碼。具有完整權限的註冊表

WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Demo\" "mydemo" "abc" 
AccessControl::GrantOnRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Demo\" "PC116\Users" "FullAccess" 

我試着在Windows XP電腦上做。我嘗試使用REGINI使用一個VBScript,它給用戶「每個人」的完整權限。 所以任何人都可以幫助我解決這個問題。

回答

4

AccessControl插件只支持短的HKEY名稱。

!include LogicLib.nsh 
!define StringSID_BUILTIN_Users S-1-5-32-545 

WriteRegStr HKLM "SOFTWARE\Demo\" "mydemo" "abc" 
AccessControl::GrantOnRegKey HKLM "SOFTWARE\Demo\" "(${StringSID_BUILTIN_Users})" "FullAccess" 
pop $0 
${If} $0 != "ok" 
    pop $1 
    DetailPrint $0>$1 ; In your case: "error>Bad root key name (HKEY_LOCAL_MACHINE)" 
${EndIf} 
+0

它工作正常。但我有使用SID的疑問。我應該使用S-1-5-32-545(用戶)還是S-1-1-0(每個人)?有什麼不同?如果有任何新用戶添加到Windows登錄帳戶,那麼該用戶將被添加到每個人或用戶? – Navaneet

+1

用戶是一組像Adminstrators是一個組,每個人都依賴於在註冊表中的設置,但它通常是每個人都排除匿名網絡共享登錄...編輯:請參閱http://technet.microsoft.com/en-us/library /cc780850%28WS.10%29.aspx和http://support.microsoft.com/kb/278259 – Anders

+0

當我通過代碼檢查時,它不工作。添加此註冊表訪問插件後,我試圖通過使用vb6代碼(通過使用RegSetValueEx函數)更改值它沒有work.when運行代碼作爲管理員運行註冊表changed.o該怎麼辦?那麼有什麼用爲所有用戶設置權限? – Navaneet