33

奇妙な問題があります。

Windows 7 エンタープライズ SP1 64 ビットを使用しています。

プロジェクトの Program files と Program files X86 ディレクトリ パスを取得する必要があります。これは私がやったことです:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);

ただし、これらの行はどちらも Program files X86 フォルダーを返します。

どうすれば解決できますか?

4

7 に答える 7

72

これは、x86、x64、または任意の CPU 構成で機能します。

string programFiles = Environment.ExpandEnvironmentVariables("%ProgramW6432%");
string programFilesX86 = Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%");

環境変数ProgramW6432を使用すると、常に Program Files フォルダーが返さProgramFilesれますが、アプリケーションのコンパイル オプションによって異なるためです。

于 2015-11-19T17:16:00.707 に答える
26

結果は、プロジェクトが対象としているプラ​​ットフォームによって異なります。x86 を対象とする場合、 とEnvironment.SpecialFolder.ProgramFilesの両方Environment.SpecialFolder.ProgramFilesX86が同じパスを返します。

于 2012-10-03T14:47:58.860 に答える
3

Environment.SpecialFolder.ProgramFiles32 ビット アプリケーションの場合は x86 フォルダーを返し、64 ビット Windows 上の 64 ビット アプリケーションの場合は Program Files を返します。プロジェクトの構成設定を確認してください。

于 2012-10-03T14:47:48.800 に答える
3

Visual Studio の構成マネージャー ([ビルド] -> [構成マネージャー]) を使用して、ターゲット プラットフォームを変更します。

プラットフォーム列で、x64 が利用可能かどうかを確認します。そうでない場合は、ドロップダウンをクリックして「新規」を選択します。その後、x64 をターゲット プラットフォームとして追加できます。Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)再度デバッグすると、が返されることがわかりますC:\Program Files

于 2012-10-03T14:55:21.530 に答える
1

プログラムが 32 ビットの場合、これは常に x86 フォルダーを返します

于 2012-10-03T14:50:30.427 に答える