2015-11-23 19 views
18

私はプログラムファイルディレクトリを64ビットOSで入手しようとしています。Program Filesディレクトリはどのように入手できますか?

Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86).ToString()); 
Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles).ToString()); 

すべてのヘルプ:このコードは、以下同じ答えProgram Files (x86)を返しますか?

+2

上で実行されている64ビットのWindows
64ビットプログラムで実行していますか? – ChrisF

+3

おそらくhttp://stackoverflow.com/questions/3397818/environment-specialfolder-programfiles-value-for-a-32-bit-application-on-windowsに関連しています – Codor

+0

私は任意のCPUのモードデバッグでコンパイルしました。 x86でコンパイルしますが、同じ結果を返します –

答えて

4

これは、あなたが望むものである:

Environment.GetEnvironmentVariable("ProgramW6432") 

それはx64のプログラムディレクトリへのパスを返します。

は、環境変数とWOW64に関する詳細については、こちらをお読みください。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx

+3

私はそれが説明に値すると思う... –

+4

これは "トリック"です。 'Environment.SpecialFolder'を使う方が良いでしょう。 – i486

+0

どうしてそれは "トリック"ですか?それは環境変数を呼び出しており、OPが後にある値を返します。特別なフォルダを使用することは彼のために働いていないようです。 – JaggenSWE

25

あなたはもちろんの64ビットモードでプログラムを実行する必要があります。そして、これはに

C:\Program Files (x86) 
C:\Program Files 

Go]を出力します。> ...プロジェクト>あなたのプロジェクトのプロパティを構築する>無効にするには、この

Console.WriteLine(Environment.GetEnvironmentVariable("ProgramFiles(x86)")); 

のために32ビットの

1

を好むC# - How to get Program Files (x86) on Windows 64 bit

このリンクをご確認ください

上記のリンクを見ると、x86 Program Files directoryが返されます。

32ビットのWindows
32ビットプログラムは、あなたのテストプログラムは、32ビットまたは64ビットとしてコンパイルされた64ビットの窓

関連する問題