无法将所有者更改为“管理员”以获取“系统”中的注册表项

时间:2014-09-19 00:41:21

标签: c# .net windows registry

我感兴趣的钥匙在

之下

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);

1 个答案:

答案 0 :(得分:0)

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

我首先启用 SeTakeOwnershipPrivilege ,然后我可以使用我的代码获取所有者。