C#将注册表访问权限授予父级

时间:2018-07-10 13:20:50

标签: c# registry overwrite administrator

您好,我想将RegistrySubkey与子项和值放在一起。

我的应用程序以管理员身份启动,但是我需要插入值admin权限的注册表文件夹仅适用于READ,只有具有写访问权的用户才是系统。

要明确的想法是这样的:

HKLM \ SYSTEM \ subkey2 \ grandkey1 \ PARENTFOLDER

在这种情况下为PARENTFOLDER,管理员仅具有READ访问权限,我该如何设置Write访问权限

public static void SetRegistryValue(
  string root,
  string subkey,
  string valuename,
  object value,
  RegistryValueKind valueKind = RegistryValueKind.String
) {
    RegistryKey key;
    switch (root)
    {
        case "HKEY_CLASSES_ROOT":
            key = Registry.ClassesRoot.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree);
            if (key != null)
            {
                key.SetValue(valuename, value, valueKind);
            }
            key.Close();
            break;
        case "HKEY_CURRENT_CONFIG":
            key = Registry.CurrentConfig.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree);
            if (key != null)
            {
                key.SetValue(valuename, value, valueKind);
            }
            key.Close();
            break;
        case "HKEY_CURRENT_USER":
            key = Registry.CurrentUser.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree);
            if (key != null)
            {
                key.SetValue(valuename, value, valueKind);
            }
            key.Close();
            break;
        case "HKEY_LOCAL_MACHINE":
            key = Registry.LocalMachine.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree);
            if (key != null)
            {
                key.SetValue(valuename, value,valueKind);
            }
            key.Close();
            break;
        case "HKEY_USERS":
            key = Registry.Users.CreateSubKey(subkey, RegistryKeyPermissionCheck.ReadWriteSubTree);
            if (key != null)
            {
                key.SetValue(valuename, value, valueKind);
            }
            key.Close();
            break;
    }
}

如果我手动启用了对父文件夹中admin的写访问权限,则一切正常,但是在C#中该如何做?我该如何覆盖父文件夹以授予管理员  在父文件夹中进行写访问

经过更多无用的搜索后,我发现:http://www.mikeobrien.net/blog/taking-ownership-and-setting-admin拥有对象的所有权并具有管理员权限,但是放入我的方法根本没有帮助。

编辑:而且parentfolder的组所有者是系统,看来这​​是为什么我不能在父文件夹中插入新文件夹的问题。现在我被卡住了:(

0 个答案:

没有答案
相关问题