在你尝试用“快速谷歌搜索”来回答这个问题之前。我想指出的是我已经这样做了。这是情况,我有以下方法尝试修改注册表项值。我遇到的问题是,执行时,它会抛出 UnauthorizedAccessException即使我已经将密钥打开为可写。我以管理员身份运行 Visual Studio,甚至尝试制作一个带有清单文件的小 .exe,强制其以管理员身份运行,但没有成功执行代码。密钥已经存在,它不会尝试进入 CreateKey 方法。这是代码块。
Path = "S-1-5-21-1644491937-1078145449-682003330-5490\Software\Microsoft\Windows\CurrentVersion\Policies\System"
Key = "DisableTaskMgr"
NewValue = 1
public OperationResult ModifyKey()
{
OperationResult result = new OperationResult();
if (!Path.IsNullOrEmptyTrim())
{
if (!Key.IsNullOrEmptyTrim())
{
try
{
var key = Microsoft.Win32.Registry.Users.OpenSubKey(Path, true);
if (key != null)
{
key.SetValue(Key, NewValue);
key.Close();
}
else
{
result = CreateKey();
}
}
catch (Exception ex)
{
result.SetFail("Error accessing registry", ex);
}
}
else
{
result.SetFail("Registry key was null");
}
}
else
{
result.SetFail("Registry path was null");
}
return result;
}
我是否必须手动沿着注册表树将每个 OpenSubKey 调用设置为可写?我也尝试了这个,仍然抛出同样的错误......
在你的密钥的 var 中
var key = Microsoft.Win32.Registry.Users.OpenSubKey(Path, true);
改成
var key = Microsoft.Win32.Registry.Users.OpenSubKey(Path, RegistryKeyPermissionCheck.ReadWriteSubTree);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)