use*_*868 3 c# registry windows-7 visual-studio-2012
我想SOFTWARE\Wow6432Node\Program\SubProgram使用Windows 7中的C#代码修改注册表路径中的数据.我能够读取值,但我无法写入Registry.这是代码:
RegistryKey SUBKEY;
RegistryKey TAWKAY = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
string subkey = "SOFTWARE\\Wow6432Node\\Program\\SubProgram ";
if (TAWKAY.OpenSubKey(subkey) != null) // Get values from Registry
{
TAWKAY = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
SUBKEY = TAWKAY.OpenSubKey(subkey); // subkey opens
SUBKEY = TAWKAY.OpenSubKey(subkey,true); // subkey not open shows error Requested registry access is not allowed
SUBKEY.SetValue("Some name", "1234567890");
Console.WriteLine(SUBKEY.GetValue("Some name").ToString());
}
else
{
Console.WriteLine("Cannot open registry");
}
Console.Read();
Run Code Online (Sandbox Code Playgroud)
如果我设置OpenSubKey(subkey, true),则显示错误消息Requested registry access is not allowed
是否需要写入注册表的权限?请帮我解决这个问题
Wow6432Node不是注册表中的真实路径.它是64位OS中32位密钥的别名.
您必须使用RegistryView.Registry32才能指定您希望使用32位.
RegistryKey reg32key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey reg_32bit_AppKey = reg32key.OpenSubKey(@"SOFTWARE\Program\SubProgram");
if (reg_32bit_AppKey != null)
{
// Here you can work with "SOFTWARE\\Wow6432Node\\Program\\SubProgram "
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10649 次 |
| 最近记录: |