2014-09-19 157 views
1

我感興趣是在無法更改所有者「管理員」從「系統」註冊表項

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ Windows中的鍵\ CURRENTVERSION \ SETUP \ PnpLockdownFiles

這些密鑰給予系統用戶完全訪問權限,並且只能讀取管理員權限。我登錄了管理員帳戶。我正在使用2012 R2。

我可以

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

通過註冊表編輯器更改所有者下面是我曾嘗試在C#中的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); 

也試過的Win32 API:

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 2014-09-19 01:32:42

+0

您必須啓用SeTakeOwnershipPrivilege爲了分配一個對象的所有權。請注意,這隻允許您將所有權設置爲您自己的帳戶或您所屬的組。或者,如果啓用SeBackupPrivilege和SeRestorePrivilege,則可以將所有權分配給任何人。 (如果您有對該對象的WRITE_OWNER訪問權限,您也可以自行指定對象的所有權而無需權限。) – 2014-09-19 03:39:16

+0

在這種情況下,由於您試圖將所有權分配給管理員帳戶,因此您需要以管理員帳戶(不只是任何舊的管理帳戶,但該特定帳戶)或啓用備份和恢復權限。請注意,通常將所有權分配給管理員而不是管理員。 – 2014-09-19 03:43:51

回答

0

感謝@HarryJohnston。你的方法有效。

我第一次啓用SeTakeOwnershipPrivilege,然後我可以帶着我的代碼的所有者。