特集・集中企画

最新のWindowsでアプリのインストール先はどこにすべき? Windowsのフォルダー構成を正しく理解しよう

「Program Files」や「Users」などにはそれぞれ意味と役割がある

Windowsのフォルダー構成

 Windowsには「Program Files」や「Users」、「Windows」といったフォルダーが最初から用意されていますが、これらはそれぞれ意味と役割を持っています。

 しかし、そのことはあまり理解されていないようで、作法通りに用いられていないのをよく見かけます。古いアプリのなかには、いまだ「C:¥」ドライブ直下に自分でフォルダーを作成し、実行ファイルやユーザーデータを保存するものも少なくありません。また、古参のアプリ開発者であっても、最新のWindowsでアプリをどこへインストールすべきかよくわかっていない方もいらっしゃるのではないでしょうか。

 そこで今回は、日本マイクロソフト株式会社が公開しているWindowsのフォルダー構成に関する記事をご紹介します。この記事では、Windowsのフォルダーにはそれぞれ決められた役割があること、そしてアプリケーションをどこにインストールするのが推奨されるかを解説しています。

[ここまで樽井 秀人、窓の杜編集部 補編]

Windowsのフォルダー構成を理解しよう — アプリはどこにインストールされるべき?

[以下、灰色囲み部分は原著(出典:日本マイクロソフト株式会社)]

■はじめに — よくある疑問

 Windowsにアプリケーションをインストールすると、インストール先は大きく分けて以下の3パターンがあります。

インストール先の例よくあるソフト
C:¥Program Files¥Office、ブラウザーなど
C:¥Users¥<ユーザー名>¥AppData¥Local¥Programs¥VS Code(ユーザーインストール)など
C:¥tool¥ など、ドライブ直下一部のツール(非推奨)

「Program FilesではなくAppDataの中にインストールされたけど大丈夫?」

「C:¥の直下にフォルダーを作ってインストールしてもいいの?」

 これらの疑問に答えるために、まずWindowsのフォルダー構成のルールから見ていきましょう。

■Windowsのフォルダーには「役割」がある

 Windowsの各フォルダーには明確な役割が定められています。大きく分けると、ユーザーのデータを置く場所と、アプリケーションのデータを置く場所が区別されています。

●ユーザーのデータを置く場所

 ユーザーが自分で作成・編集するファイル(文書、写真、動画など)の保存先です。

対象フォルダー説明
自分だけのデータC:¥Users¥<ユーザー名>¥ドキュメント、ピクチャ、デスクトップなど
全ユーザー共通のデータC:¥Users¥Public¥他のユーザーとも共有したいファイル

●アプリケーションのデータを置く場所

 アプリケーションが内部的に使う設定ファイルやキャッシュなどの保存先です。ユーザーが直接編集する必要はないため、隠しフォルダーになっています。

対象フォルダー説明
自分だけのアプリ設定C:¥Users¥<ユーザー名>¥AppData¥アプリごとの設定やキャッシュ
全ユーザー共通のアプリ設定C:¥ProgramData¥すべてのユーザーで共有するアプリデータ

●ポイント

 たとえば、Outlookの.pstファイルは、ユーザーのデータのように見えますが、実際にはアプリケーションが管理するデータとしてAppDataに保存されます。ユーザーが直接操作するのではなく、Outlookの画面を通じて管理するという考え方です。

※窓の杜編集部より補足:

 「AppData」や「ProgramData」は隠しフォルダー

「AppData」や「ProgramData」は隠しフォルダーのため、標準の設定では「エクスプローラー」に表示されません。隠しファイルを表示するオプションを有効にするか、下記の環境変数を利用します。

■AppDataフォルダーの中身 — Roaming・Local・LocalLow の違い

 C:¥Users¥<ユーザー名>¥AppData¥ の中には、さらに3つのフォルダーがあります。

1	AppData
2 ├── Roaming … 別のPCに引き継いでも問題ない設定
3 ├── Local … このPCだけで使うデータ
4 └── LocalLow … セキュリティが制限されたアプリ用

 それぞれの役割を詳しく見てみましょう。

●Roaming フォルダー

 移動ユーザープロファイルやフォルダーリダイレクトで別のPCに引き継いでも問題ない設定データ(ブラウザーのブックマーク、アプリの個人設定など)を保存します。

 Microsoftの公式ドキュメント(ApplicationData クラス)では、RoamingFolderはユーザー設定やカスタマイズ、リンク、小さなデータファイルの保存に使用し、大容量のデータ、デバイス固有のデータ、即時同期に依存するデータには使用すべきではないとされています。

●Local フォルダー

 このPCだけで使うデータ(キャッシュ、一時ファイル、ダウンロード履歴など)を保存します。他のPCに引き継ぐ必要はありませんが、クラウドにバックアップされるため、デバイスのリセットや移行時に失われることはありません。

 Microsoftの公式ドキュメント(設定とその他のアプリ データを格納および取得する)では、以下のように説明されています。

ローカル アプリ データは、アプリ セッション間で保持する必要があり、アプリデータのローミングには適していない情報に使用する必要があります。他のデバイスには適用できないデータもここに保存する必要があります。

設定とその他のアプリ データを格納および取得する(Microsoft Learn)より

●LocalLow フォルダー

 セキュリティが制限された状態(低い整合性レベル)で動作するアプリケーションのデータを保存します。たとえば、ブラウザーの保護モードで使われるデータが該当します。通常のアプリがこのフォルダーを使うことはほとんどありません。

●注意:Roamingに保存すべきでないデータについて

 デバイス固有の情報(ローカルファイルへのパス名など)、大容量のデータ、即時同期に依存するデータはRoamingに保存しないでください。これらはLocal フォルダーに保存します。詳しくはStore and retrieve settings and other app data - Roaming dataをご覧ください。

■アプリケーションはどこにインストールされるべきか

●パターン A:全ユーザー向けインストール(管理者権限が必要)

 PCのすべてのユーザーが使えるようにインストールする一般的な方法です。

何を置くかどこに置くか
プログラム本体(exe, dll)C:¥Program Files¥ または C:¥Program Files (x86)¥
全ユーザー共通の設定データC:¥ProgramData¥
ユーザーごとの設定データC:¥Users¥<ユーザー名>¥AppData¥

 C:¥Program Files¥にはプログラム本体だけを置き、設定データやユーザーデータは置きません。これは、Program Filesフォルダーには標準ユーザーの書き込み権限がないためです。

●パターン B:特定ユーザー向けインストール(管理者権限が不要)

 現在サインインしているユーザーだけが使えるようにインストールする方法です。管理者権限が不要なため、UAC(ユーザー アカウント制御)のダイアログが表示されません。

何を置くかどこに置くか
プログラム本体C:¥Users¥<ユーザー名>¥AppData¥Local¥Programs¥
共有コンポーネントC:¥Users¥<ユーザー名>¥AppData¥Local¥Programs¥Common¥

●「AppDataにインストールされたけど大丈夫?」の答え

 Visual Studio Codeのユーザーインストールが AppData¥Local¥Programs¥ にインストールされるのは、Microsoftのガイドラインに従った正しい動作です。管理者権限なしでインストールする場合の正式な保存先がこのフォルダーです。

■推奨されないインストール方法

●ドライブ直下にフォルダーを作る

1	C:¥MyApp¥	←	非推奨
2 C:¥tools¥ ← 非推奨

 C:¥ドライブの直下にアプリケーション用のフォルダーを作成することは、Microsoftのガイドラインで明確に推奨されていません。Program Filesフォルダーは、パスにスペースが含まれることで問題が起きるアプリもありますが、それでもドライブ直下への配置は避けるべきとされています。

●Program Filesに設定データを保存する

 C:¥Program Files¥<アプリ名>¥config.ini のように、Program Filesの中にアプリの設定ファイルを置くのも不適切です。標準ユーザーには書き込み権限がないため、設定の保存に失敗します。設定データはProgramDataやAppDataに保存しましょう。

■まとめ — フォルダー構成の全体像

1 	C:
2  ├── Program Files¥ … 全ユーザー向けアプリの本体(64-bit)
3  ├── Program Files (x86)¥ … 全ユーザー向けアプリの本体(32-bit)
4  ├── ProgramData¥ … 全ユーザー共通のアプリ設定(隠しフォルダー)
5  ├── Users¥
6  │   ├── <ユーザー名>¥
7  │   │   ├── Desktop¥ … デスクトップ
8  │   │   ├── Documents¥ … ドキュメント
9  │   │   ├── Downloads¥ … ダウンロード
10 │   │   └── AppData¥ … アプリ設定 (隠しフォルダー)
11 │   │       ├── Roaming¥ … 別のPCに引き継いでも問題ない設定
12 │   │       ├── Local¥
13 │   │       │   └── Programs¥ … ユーザー向けアプリの本体
14 │   │       └── LocalLow¥ … 制限付きアプリのデータ
15 │   └── Public¥ … 全ユーザー共有のデータ
16 └── Windows¥ … OSのシステムファイル

■環境変数の対応表

 スクリプトや設定で使われる環境変数と、実際のパスの対応です。

環境変数展開されるパスの例
%USERPROFILE%C:¥Users¥<ユーザー名>
%APPDATA%C:¥Users¥<ユーザー名>¥AppData¥Roaming
%LOCALAPPDATA%C:¥Users¥<ユーザー名>¥AppData¥Local
%ProgramData%C:¥ProgramData
%ALLUSERSPROFILE%C:¥ProgramData
%ProgramFiles%C:¥Program Files
%ProgramFiles(x86)%C:¥Program Files (x86)
%PUBLIC%C:¥Users¥Public

※窓の杜編集部より補足:

 [ファイルを指定して実行]ダイアログ([Windows]+[R]キー)

[ファイルを指定して実行]ダイアログにこれらの環境変数を入力して[Enter]キーを押せば、当該環境変数のフォルダーを「エクスプローラー」で開くことができます。隠しファイルを表示する設定を有効にしていなくても利用可能です。

原著「Windowsのフォルダー構成を理解しよう — アプリはどこにインストールされるべき?」はこちらから