Application Dataの使い分け方法

WindowsのApplication Dataフォルダは、次の2ヶ所にあります。

  1. Documents and Settings\ユーザー名\Application Data
  2. Documents and Settings\ユーザー名\Local Settings\Application Data

資料によると、1番はローミングに対応していて、2番はローミングに対応していないと書かれています。ローミングとは、ユーザーがログインしたマシンにデーターが移動する機能のようです。

私はこれまで、これらの使い分けについてよくわかっていませんでした。以下のページの記述を見て、ようやくわかりました。

例えばそうですね、何かローカルの資源にアクセスする場合前回のアクセス履歴を保存するとします(C:\Foo.txtとか)。この場合、同じユーザーといえど、他のコンピュータではこの設定を使う必要はありませんし使えません。つまり「マシンに依存した」の設定になります。こういった場合は「移動してはならない設定」なので、Localに配置すべきです。
ApplicationDataのフォルダリダイレクトがうまくできていない。 − Windows Server Insider − @IT

つまり、マシンに依存した設定の場合には「Local Settings」を使うということのようです。

ちなみに、Windows VistaWindows 7では、これらのパスが変更されています。
リソースの管理 - Windows 7 対応アプリケーションの互換性

項目 Windows XP Windows 7
ユーザー プロファイルのルート フォルダー名 Documents and Settings Users
ユーザーごとのアプリケーション データ フォルダー(ローミングあり) \Application Data \AppData\Roaming
ユーザーごとのアプリケーション データ フォルダー(ローミングなし) \Local Settings\Application Data \AppData\Local

しかし、以前のアプリケーションがそのまま動作するように、「接合点」という仮想的なフォルダが用意され、古いフォルダにアクセスした場合、新しいフォルダにリダイレクトされるようです。

Windows 2000以降では、ローミングありのフォルダパスが環境変数APPDATAに格納されるようです。これから作るアプリケーションでは、環境変数APPDATAを使おうと思います。