22

重複の可能性:
C#-Windows Vista 64ビットでプログラムファイル(x86)を取得する方法

ユーザーがWindowsのデフォルトのを変更する可能性C:\Program Filesはかなり低いと思いますが、奇妙なことが起こっています!

システムからへの正しいパスを取得するにはどうすればよいProgram Filesですか?

4

6 に答える 6

35

.NETは、プログラムファイル、マイドキュメントなどの「特別なフォルダ」の列挙を提供します。

列挙型から実際のパスに変換するコードは次のようになります。

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx

于 2009-07-06T05:52:13.243 に答える
28

これに追加するだけです。

32 ビット モードで実行している場合 (64 ビット OS でも)、SpecialFolder.ProgramFiles と %PROGRAMFILES% は ..Program Files (x86) を返します。

どちらか一方または両方が特に必要な場合は、次のように確認する必要があります。

32ビット システム:

SpecialFolder.ProgramFiles= ..プログラム ファイル\

32ビット プロセス の64ビット システム: SpecialFolder.ProgramFiles= ..Program Files (x86)\ Environment.GetEnvironmentVariable("ProgramW6432")= ..Program Files\

64ビット プロセスの 64 ビット システム: = ..Program SpecialFolder.ProgramFilesFiles\ Environment.GetEnvironmentVariable("PROGRAMFILES(X86)")= ..Program Files (x86)\

明らかに、これはロケールなどに依存します...

于 2010-01-12T23:19:43.427 に答える
5

EnvironmentクラスでGetFolderPathを使用します。

try {
    Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
    Console.Out.WriteLine( ex.StackTrace );
}
于 2009-07-06T05:57:41.173 に答える
2

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)がおそらく最良の解決策ですが、考えられる別の方法はProgramFiles環境変数の値を評価することです。このために、クラスのGetEnvironmentVariableorExpandEnvironmentVariablesメソッドを使用できます。Environment

Environment.GetEnvironmentVariable("ProgramFiles")

Environment.ExpandEnvironmentVariables("%ProgramFiles%")
于 2009-07-06T06:23:06.190 に答える
1

次の環境変数にアクセスできます:%PROGRAMFILES%

すなわち:

%PROGRAMFILES%\Maxis\SimCity

C#で:

System.Environment.SpecialFolder.ProgramFiles
于 2009-07-06T05:52:05.193 に答える
1
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

は、64 ビット Windows では「プログラム ファイル (x86)」を取得し、32 ビットでは「プログラム ファイル」を取得します。

于 2010-12-14T18:04:04.657 に答える