3

我想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();

如果我设置OpenSubKey(subkey, true),它会显示一条错误消息Requested registry access is not allowed

写入注册表是否需要任何权限?请帮我解决问题

4

3 回答 3

6

Wow6432Node 不是注册表中的真实路径。它是 64 位操作系统中 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 "
}
于 2013-03-28T10:21:15.323 回答
0

在 HKLM 中修改/删除/添加密钥需要管理员权限。

在这种情况下,您想要这样做,您需要将您的应用程序清单requestedExecutionLevel值更改为requireAdministrator

于 2013-03-28T07:56:06.600 回答
0

最好使用“Reg”命令对注册表进行任何操作。

即使您想访问远程机器的注册表,您也不需要该机器的凭据,拥有机器名称就足够了。

有关“REG”命令的更多信息,请参阅以下链接

http://technet.microsoft.com/en-us/library/cc732643(v=ws.10).aspx

于 2013-03-28T09:11:22.393 回答