ユーザーがWindowsのデフォルトのを変更する可能性C:\Program Files
はかなり低いと思いますが、奇妙なことが起こっています!
システムからへの正しいパスを取得するにはどうすればよいProgram Files
ですか?
ユーザーがWindowsのデフォルトのを変更する可能性C:\Program Files
はかなり低いと思いますが、奇妙なことが起こっています!
システムからへの正しいパスを取得するにはどうすればよいProgram Files
ですか?
.NETは、プログラムファイル、マイドキュメントなどの「特別なフォルダ」の列挙を提供します。
列挙型から実際のパスに変換するコードは次のようになります。
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
これに追加するだけです。
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.ProgramFiles
Files\
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)")
= ..Program Files (x86)\
明らかに、これはロケールなどに依存します...
EnvironmentクラスでGetFolderPathを使用します。
try {
Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
Console.Out.WriteLine( ex.StackTrace );
}
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
がおそらく最良の解決策ですが、考えられる別の方法はProgramFiles
環境変数の値を評価することです。このために、クラスのGetEnvironmentVariable
orExpandEnvironmentVariables
メソッドを使用できます。Environment
Environment.GetEnvironmentVariable("ProgramFiles")
Environment.ExpandEnvironmentVariables("%ProgramFiles%")
次の環境変数にアクセスできます:%PROGRAMFILES%
すなわち:
%PROGRAMFILES%\Maxis\SimCity
C#で:
System.Environment.SpecialFolder.ProgramFiles
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
は、64 ビット Windows では「プログラム ファイル (x86)」を取得し、32 ビットでは「プログラム ファイル」を取得します。