32/64位programfiles文件夹的通用注册表项路径

本文关键字:注册表 路径 64位 programfiles 文件夹 | 更新日期: 2023-09-27 18:09:35

我有一个应用程序,它的路径应该在注册表中运行,问题是我必须在32位和64位机器上使用这个应用程序,我需要在32位和64位机器上工作的通用注册表设置。

我也使用了环境变量,但它没有解决我的问题,如

" % programfiles % ' ABC ' abc.exe"

32/64位programfiles文件夹的通用注册表项路径

如果可扩展注册表项不起作用,您可以尝试自己进行扩展,例如:

        string strRegistryKeyValue = "%programfiles%/ABC/abc.exe";
        string strProgramFiles;
        if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess)
        {
            strProgramFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
        }
        else
        {
            strProgramFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
        }
        strRegistryKeyValue = strRegistryKeyValue.Replace("%programfiles%", strProgramFiles);

当您将可执行文件放在机器上时(可能与您的安装程序一起),您知道将它放在哪里。为了复制文件,您必须找到程序文件文件夹的路径。在这一点上,位置是固定的。机器是32位或64位的。它无法改变。因此,您知道可执行文件的路径,并且您只需将该路径写入注册表。

通常,您将在安装程序中执行所有这些操作。它会知道文件的安装位置。它将提供使用它正在安装的文件的实际位置写入此注册表项的功能。

在这一点上,根本没有必要再作任何间接的说明。当您将文件写入机器时,您已经为它选择了一个位置。这种选择是静态的。如果文件在Program Files (x86)中,那么它就在这里。如果它进入Program Files,还是在这里。您根本不需要将间接编码到注册表中,因为此时已经展开了间接。