您好,我想将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的组所有者是系统,看来这是为什么我不能在父文件夹中插入新文件夹的问题。现在我被卡住了:(