2013-04-15 75 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