我无法使用我的C#代码获取注册表中某些键的所有权。
我试图取得所有权
软件\微软\的Windows \ CurrentVersion \ Explorer中\我的电脑\名称空间{1CF1260C-4DD0-4ebb-811F-33C572699FDE}
我的应用是以管理员身份启动的,requireAdministrator
上有app.manifest
标记。
UAC被禁用以在没有可能干扰的安全性的情况下进行测试。
我正在我的流程上正确设置令牌SeTakeOwnershipPrivilege
(Process Explorer确认我在我的流程上已启用)。
但是当我运行我的代码时,它会在OpenSubKey
调用时返回一个空键。
这是我的方法:
public void takeKeyOwnership(RegistryHive root, string path)
{
RegistryKey RootKey = GetKey(root);
var key = RootKey.OpenSubKey(path, RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.TakeOwnership);
if(key == null)
{
logger.Warn("[takeKeyOwnership] Unable to take ownership on key " + root + "\\" + path);
return;
}
var acl = key.GetAccessControl(AccessControlSections.None);
var localAdmins = new SecurityIdentifier(Constants.LocalAdministratorsSID);
acl.SetOwner(localAdmins);
key.SetAccessControl(acl);
key.Close();
}
我的问题与:How do I programmatically give ownership of a Registry Key to Administrators?不同,因为我已按照前面的说明设置了SeTakeOwnerShipPrivilege。