我需要在没有管理员模式的情况下在注册表中写入和读取密钥。首先我想知道这可以吗?
请找到下面的代码(当 Visual Studio 在管理员模式下打开时,它工作正常)
写
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);
key.CreateSubKey("AppName");
key = key.OpenSubKey("AppName", true);
key.CreateSubKey("AppVersion");
key = key.OpenSubKey("AppVersion", true);
key.SetValue("myval", "677");
key.Close();
阅读
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);
key.CreateSubKey("AppName");
key = key.OpenSubKey("AppName", true);
//if it does exist, retrieve the stored values
if (key != null)
{
string s = (string)key.GetValue("myval");
Console.Read();
key.Close();
}
请任何人建议一种方法来做到这一点。 (我也尝试添加以下行)
错误:
ClickOnce不支持请求执行级别 “需要管理员”。
这里有一个答案 如何在没有管理员的情况下写入注册表
读取是通过使用RegistryKeyPermissionCheck.ReadSubTree选项完成的
RegistryKey baseRegistryKey = RegistryKey.OpenBaseKey(baseKey, RegistryView.Registry64);
RegistryKey subRegistryKey = baseRegistryKey.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadSubTree);
if (subRegistryKey != null)
{
object value64 = subRegistryKey.GetValue(value);
if (value64 != null)
{
baseRegistryKey.Close();
subRegistryKey.Close();
return value64;
}
subRegistryKey.Close();
}
baseRegistryKey.Close();
然后对RegistryView.Registry32执行相同的操作