我感兴趣的钥匙在
之下HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \设置\ PnpLockdownFiles
这些密钥提供对系统用户的完全访问权限,并且只对管理员具有读取权限。我已登录管理员帐户。我使用的是2012 R2。
我可以通过
regedit 更改所有者 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);
答案 0 :(得分:0)
感谢@HarryJohnston。你的方法有效。
我首先启用 SeTakeOwnershipPrivilege ,然后我可以使用我的代码获取所有者。