2013-04-15 6 views
2

nsis의 레지스트리에 대한 전체 권한을 부여하려하지만 작동하지 않습니다. 다음은 샘플 코드입니다.전체 권한을 가진 레지스트리

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

Windows XP PC에서 시도해 보았습니다. "Everyone"사용자에게 전체 권한을 부여하는 vbscript를 사용하여 REGINI를 사용해 보았습니다. 그럼 누구든지이 일을 도와 줄 수 있습니다.

답변

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 함수를 사용하여)를 사용하여 값을 변경하려고 시도했지만 관리자 권한으로 실행되는 코드를 실행하지 못했습니다. 그래서 무엇을해야합니까? 모든 사용자에게 권한을 설정 하시겠습니까? – Navaneet

관련 문제