Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理64位操作系统的注册表项_C#_.net_Registry_Key - Fatal编程技术网

C# 处理64位操作系统的注册表项

C# 处理64位操作系统的注册表项,c#,.net,registry,key,C#,.net,Registry,Key,我正在使用注册表项从我的计算机的已安装文件夹中访问XML文件的路径。 我的机器有32位操作系统。所以我用 using (RegistryKey pRegKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Folder\subfolder\key")) { if (pRegKey == null) { return; } else // get path 但当

我正在使用注册表项从我的计算机的已安装文件夹中访问XML文件的路径。 我的机器有32位操作系统。所以我用

using (RegistryKey pRegKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Folder\subfolder\key"))
{
    if (pRegKey == null)
    {
        return;
    } 
    else
        // get path
但当我在64位机器上运行它时,它显示错误,因为我没有处理64位操作系统的异常情况


如何处理它???

如果您的应用程序是32位的,并且您希望同时在32位和64位操作系统上安装,请使用以下方法:

string regPath = string.Format(@"SOFTWARE\{0}AppName\Folder\subfolder\key", 
                      Environment.Is64BitProcess ? @"Wow6432Node\" : string.Empty());

using (RegistryKey pRegKey = Registry.LocalMachine.OpenSubKey(regPath))
        {
             .....

那么64位机器上的密钥在哪里?您使用的是什么版本的.net?@Ic我没有权限在64位机器上安装它。这就是为什么我感到困惑。请从这里开始谢谢你的兴趣:)这里的主要问题是我不知道64位环境的路径部分。对于32位的??string.Empty()??,是否有类似Wow6432Node的默认值???所以你说在64位机器中会有类似软件\Filder\subfolder\key??它会跑吗??如果机器不是32位的,那么我必须从64位操作系统读取XML。所以我必须穿过那条路,对不起。您正在
x86
操作系统上运行,并且在
HKLM
下有
Wow6432Node
?是的。我正在运行x86位操作系统。以及在HKLM下具有WOW6432节点。但是如果我用64位安装我的软件呢??其路径是什么?如果在64位操作系统上安装32位应用程序,则必须将其密钥添加到
Software\Wow6432Node\AppName
如果应用程序是64位的,则将其密钥添加到
Software\AppName
。见编辑后的答案。