1. ホーム
  2. c#

[解決済み] C# - Windows 64ビット版でProgram Files (x86)を取得する方法

2022-04-27 18:21:46

質問

使っています。

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

あるプログラムがユーザーのマシンで検出されたかどうかを判断するため(理想的ではありませんが、私が探しているプログラムはMS-DOSアプリケーションの古くさく、他の方法を思いつかなかったのです)。

Windows XPと32ビット版のWindows Vistaでは、これは問題なく動作します。しかし、x64 Windows Vistaでは、アプリケーションはProgram Files x86にインストールされているのに、コードはx64 Program Filesフォルダーを返します。C:\Program Files (x86)" をハード配線せずに Program Files x86 のパスをプログラム的に返す方法はありますか?

解決方法を教えてください。

以下の関数は x86 を返します。 Program Files ディレクトリを、これら3つのWindowsの構成すべてで作成します。

  • 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");
}