C#Can';我不能拥有某些注册表项的所有权
我无法用我的C#代码获得注册表中某些键的所有权 我在试着掌控一切 软件\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace{1CF1260C-4DD0-4ebb-811F-33C572699FDE} 我的应用程序以管理员身份启动,并在C#Can';我不能拥有某些注册表项的所有权,c#,registry,registrykey,C#,Registry,Registrykey,我无法用我的C#代码获得注册表中某些键的所有权 我在试着掌控一切 软件\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace{1CF1260C-4DD0-4ebb-811F-33C572699FDE} 我的应用程序以管理员身份启动,并在app.manifest上显示requireAdministrator标志 UAC被禁用,无法在没有此可能干扰的安全性的情况下进行测试 我正在进程上正确设置令牌SeTakeOwnershipP
app.manifest
上显示requireAdministrator
标志
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();
}
我的问题不同于:因为我已经按照前面的规定设置了SeTakeOwnerShipPrivilege。您的项目的“目标CPU”设置是否可能重复?查看更多->我的灵能提示您正在运行@BobSwager否我看到了这个问题,我设置了SetakOwnership权限。@Rostech我正在以32位进程运行是的,但我正在使用RegistryView.Registry32打开注册表,并在需要时修改WOW6432节点上的64位键。