2014-09-19 1 views
1

내가 관심이 마이크로 소프트 \ 윈도우 \는 "시스템"에서 레지스트리 키에 대해 "관리자"로 소유자를 변경하지 못했습니다

HKEY_LOCAL_MACHINE \ 소프트웨어 아래에 키 \ CurrentVersion을 설정 \의 PnpLockdownFiles

이 키 \ 시스템 사용자에게 모든 권한을 부여하고 관리자에게만 읽기 권한을 부여합니다. 관리자 계정에 로그인했습니다. 나는 2012 R2를 사용하고 있습니다.

나는 여기에 내가 시도 C#에서 API를이다

right click -> Advanced -> Change onwer -> type "Administrator" -> OK -> Apply 

에 의해 regedit를를 통해 소유자를 변경할 수 있습니다. @HarryJohnston에

SetSecurityInfo(getRegistryKeyHandle(key), SE_OBJECT_TYPE.SE_REGISTRY_KEY, SECURITY_INFORMATION.OWNER_SECURITY_INFORMATION, ownerSid, groupSid, dacl, sacl); 
+2

UAC를 사용하도록 설정 한 경우 응용 프로그램을 관리자로 명시 적으로 실행해야합니다. 높은 질문으로 응용 프로그램을 실행하는 방법에 대한이 질문과 대답을 참조하십시오. http://stackoverflow.com/questions/14800089/forcing-an-application-to-admin-from-config-file – itsme86

+0

SeTakeOwnershipPrivilege를 활성화해야합니다. 개체의 소유권을 할당하려면 자신의 계정 또는 자신이 소속 된 그룹에만 소유권을 설정할 수 있습니다. SeBackupPrivilege 및 SeRestorePrivilege를 사용하도록 설정하면 다른 사람에게 소유권을 할당 할 수 있습니다. (개체에 대한 WRITE_OWNER 액세스 권한이있는 경우 권한없이 개체의 소유권을 할당 할 수도 있습니다. –

+0

이 경우 Administrator 계정에 소유권을 할당하려고 시도하기 때문에 관리자 계정 (기존 관리 계정뿐만 아니라 특정 계정) 또는 백업 및 복원 권한을 사용할 수 있습니다. 관리자보다는 관리자에게 소유권을 할당하는 것이 일반적입니다. –

답변

0

감사 : 접근도 시도는 Win32 API를

key = Registry.LocalMachine.OpenSubKey(test, RegistryKeyPermissionCheck.ReadSubTree, RegistryRights.TakeOwnership); 

    RegistrySecurity rs = new RegistrySecurity(); 
    rs.SetOwner(new NTAccount("Administrator"));// Set the securitys owner to be Administrator 

    key.SetAccessControl(rs); 

거부로 모두 실패했습니다. 당신의 방법이 효과가 있습니다.

내가 먼저 SeTakeOwnershipPrivilege을 사용하도록 설정하면 코드에 소유자를 추가 할 수 있습니다.

관련 문제