C# - 如何在 Windows 64 位上获取程序文件 (x86)

标签 c# windows file 64-bit

我正在使用:

FileInfo(
    System.Environment.GetFolderPath(
        System.Environment.SpecialFolder.ProgramFiles) 
    + @"\MyInstalledApp"

为了确定是否在用户机器上检测到程序(这并不理想,但我正在寻找的程序是 MS-DOS 应用程序的一个正确的旧程序,我想不出另一种方法).

在 Windows XP 和 32 位版本的 Windows Vista 上,这工作正常。但是,在 x64 Windows Vista 上,代码返回 x64 Program Files 文件夹,而应用程序安装在 Program Files x86 中。有没有办法以编程方式返回到 Program Files x86 的路径,而无需硬连接“C:\Program Files (x86)”?

最佳答案

下面的函数将返回所有这三种 Windows 配置中的 x86 Program Files 目录:

  • 32 位 Windows
  • 在 64 位 Windows 上运行的 32 位程序
  • 在 64 位 Windows 上运行的 64 位程序

static string ProgramFilesx86()
{
    if( 8 == IntPtr.Size 
        || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
    {
        return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
    }

    return Environment.GetEnvironmentVariable("ProgramFiles");
}

关于C# - 如何在 Windows 64 位上获取程序文件 (x86),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194157/

相关文章:

c# - 在 .NET 中使用 DjVu

c# - 在 Visual Studio 中调试文件 IO 错误的最佳方法

java - 测试 RDBMS 和操作系统

c - fwrite() 性能下降

c - 尝试将缓冲区写入文件,但不断出现段错误,我不明白为什么

c# - WPF中Form对应的 "this"是什么?

c# - 将字符串数组添加到 JObject

python - python 中的 wmic 调用返回无效查询错误

c++ - 文件最后一行为空时的停止条件 C++

java - 生成文件的数字签名