2

MSDNのドキュメントに明確に記載されているものが見つからないためProgramFilesX86、32 ビット システムでは enum 値は何を返しますか?


開発環境

注:私の組織では、何かをテストしたいときにいつでもマシンを立ち上げることができません。これが私がコミュニティに尋ねている理由です。仮想マシンを構築するための 32 ビット ISO にアクセスすることさえできないので、この組織内でいくつかの制限があることを理解してください。

  • Windows 7 64 ビット

本番環境

本番環境で 32 ビット システムを実行しているか、64 ビット システムを実行しているかはわかりませんが、混在している可能性があります。ただし、オペレーティング システムのリストは知っています。

  • ウィンドウズ7
  • Windows ビスタ
  • WindowsXP

目的

アプリケーションを動的に起動できるように、正しいプログラム ファイル ディレクトリを取得します。

既知の変数

  1. アプリケーションは MSI でインストールされ、デフォルトのオプションでインストールされるため、Program Filesディレクトリにインストールされます。
  2. アプリケーションは 32 ビット アプリケーションであるため、64 ビット システムではProgram Files (x86)フォルダが使用されますが、32 ビット システムでは標準Program Filesディレクトリが使用されます。

皆さんありがとう!

4

4 に答える 4

21

32 ビット XP: 空の文字列 :(
32 ビット Vista: "C:\Program Files"
32 ビット Win7: 未テスト、おそらく Vista と同じ
64 ビット Win7: "C:\Program Files (x86)"

64 ビット XP についてはよくわかりませんが、私自身も興味があります。

于 2013-01-14T20:39:00.987 に答える
3

の備考セクションにKNOWNFOLDERIDは、(管理されていない観点から)探している情報を提供する便利な表が含まれています。ここでそれを再現するのは難しいです:

OS      App     KNOWNFOLDERID               Default                             CSIDL
32 bit  32 bit  FOLDERID_ProgramFilesX86    %SystemDrive%\Program Files         CSIDL_PROGRAM_FILESX86
64 bit  64 bit  FOLDERID_ProgramFilesX86    %SystemDrive%\Program Files (x86)   CSIDL_PROGRAM_FILESX86
64 bit  32 bit  FOLDERID_ProgramFilesX86    %SystemDrive%\Program Files (x86)   CSIDL_PROGRAM_FILESX86
于 2012-12-18T15:41:00.567 に答える
1

「Program Files」を返します。MSI を使用してインストールしているため、プログラムが予想される場所にあると想定するのではなく、インストーラー API (MsiLocateComponent など) を使用してプログラムを見つけることを検討する場合があります。

于 2012-12-18T15:33:28.123 に答える
1

私の Win 7 32 ビット システムでは、ProgramFilesX86戻り値が返されますC:\Program Files(末尾のスラッシュはありません)。

Console.WriteLine("GetFolderPath: {0}", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
于 2012-12-18T15:35:07.770 に答える