C#Can';我不能拥有某些注册表项的所有权

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

我无法用我的C#代码获得注册表中某些键的所有权

我在试着掌控一切

软件\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace{1CF1260C-4DD0-4ebb-811F-33C572699FDE}

我的应用程序以管理员身份启动,并在
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位键。