C#无法获得某些注册表项的所有权

时间:2017-07-20 07:21:32

标签: c# registry registrykey

我无法使用我的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。

0 个答案:

没有答案