標準のWindowsインストールでは、「Program Files」ディレクトリは%SystemDrive%\Program Files(またはローカライズした同等の場所)にあり、「Common Program Files」(またはローカライズした同等の場所)は「Program Files」の下位ディレクトリになります。 Windows Vista以降では、’Program Files’ と ‘Common Program Files’ ディレクトリへのパスは、ディスク上でローカライズされません。 代わりに、ローカライズされた名前は、ローカライズされていない場所へのNTFSジャンクションポイントになります。 さらに、Windows シェルは、システムのユーザー インターフェイス表示言語に応じて Program Files フォルダーの名前をローカライズします。

‘Program Files’ と ‘Common Program Files’ の両方を移動することができます。 システム起動時に、’Program Files’ と ‘Common Program Files’ への実際のパスがWindowsレジストリから読み込まれ、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionの下のProgramFilesDirCommonFilesDirに格納されます。 その後、揮発性環境変数 %ProgramFiles%%CommonProgramFiles% を使ってシステムの残りの部分からアクセスできるようになる。 アプリケーションは、dirids を使って Setup API に問い合わせるか、Windows Management Instrumentation を使って、あるいは CSIDLs や ShellSpecialFolderConstants を使ってシェルに問い合わせることで、これらのパスの位置を得ることもできる。 これらはすべてローカライズに依存しない方法です。

x86-64 および IA-64 バージョンの Windows には、アプリケーション ファイル用に 2 つのフォルダーがあります。 Program Files フォルダは 64 ビット プログラムのデフォルトのインストール先として機能し、Program Files (x86) フォルダは WoW64 エミュレーション層を必要とする 32 ビット プログラムのデフォルトのインストール先として機能します。 64 ビット Windows バージョンには %ProgramFiles(x86)% 環境変数もありますが、dirid と CSIDL は 32 ビット環境と 64 ビット環境の間で異なるものではなく、API は単に呼び出しプロセスがエミュレートされているかどうかによって異なる結果を返すに過ぎません。3 の古いファイル割り当てテーブルのファイル名の制限と後方互換性を保つために、名前 ‘Program Files’、’Program Files (x86)’ および ‘Common Program Files’ はシステムによって progra~N および common~N に短縮され、N は数字、クリーン インストールで 1 (または ‘Program Files’ と ‘Program Files (x86)’ が両方とも存在する場合は 1 と 2) となるシーケンス ナンバーです。

Windows が NTFS ボリュームにインストールされている場合、デフォルトでは、’Program Files’ フォルダは ‘Administrators’ ユーザー グループのメンバーによってのみ変更可能です。 これは、Windows 9x 用に作成されたプログラムにとって問題となることがあります。 これらのオペレーティングシステムにはファイルシステムのセキュリティがないため、プログラムはそのデータを「Program Files」に保存することができます。 Program Files’にデータを保存するプログラムは、通常、影響を受けるサブディレクトリのセキュリティを下げない限り、通常のユーザー特権を持つWindows NTシステム上で正しく実行されません。 Windows Vistaでは、ファイルとレジストリの仮想化を導入することで、この問題に対処した。 この仮想化がプロセスに対して有効になっている場合、Windows は ‘Program Files’ フォルダーの変更を %LocalAppData%\VirtualStore\Program Files (x86).

に保存します。

コメントを残す

メールアドレスが公開されることはありません。