ユーザープロファイル

今回はユーザープロファイルの話です。ユーザープロファイルはWindowsを使っていく上で非常に重要なものです。何といっても個々人の情報、データがすべて詰まっているものですので。

ユーザープロファイルとは何か

まず、ユーザープロファイルとは何で、何のためにあるのかを理解しましょう。私はこれは「複数のユーザーが同じWindowsを使用しても問題無いようにするもの」として理解しています。

AさんとBさんが1台のPCを共用していたとして以下のようなニーズは当然あるものと思います。

  • デスクトップの壁紙やスクリーンセーバーなどは自分が設定したものを使う
  • マイドキュメントやデスクトップなどに自分のファイルを置く
  • IEのお気に入りは自分で管理する
  • 自分の設定は変更されたくない、自分のファイルは他人に見られたくない

このようなことが「ユーザーごとに個別のプロファイルを持つ」ことで実現されています。

ユーザープロファイルの場所

ユーザープロファイルの場所はWindowsのバージョンによって異なります。以下のようになっています。

Windows 95/98/ME C:\windows\Profiles\<ログイン名>
Windows NT C:\Winnt\Profiles\<ログイン名>
Windows 2000/XP/2003 C:\Documents and Settings\<ログイン名>
Windows Vista/7/2008 C:\User\<ログイン名>

「95/98/ME/NT」と「2000/XP/2003」と「Vista/7/2008」で場所が異なる、ということですね。

ちなみにプロファイルの場所は%userprofile%という環境変数に格納されていますので、以下のように確認すれば自分のプロファイルの場所を確認できます。

C:\>echo %userprofile%
C:\Users\mebisuda

Windows Vista/7/2008では下位互換性を保つために「C:\Documents and Settings」が「C:\Users」に対応するようにジャンクションとして設定されています。これによってWindows XPにしか明示的に対応していないようなプログラムでもたいていの物は動作するようになっています。

image

※ジャンクションに関しては以下のあたりを参照してください。

Windows Vista移行ではプロファイルに関する場所がかなり変更になっていますので、プロファイル周りの作業を行う場合には、Windows 2000/XP/2003とWindows Vista/7/2008ではまったく異なる結果になる可能性があることを念頭に置いて作業をすることが必要です。

このようなことに備えて、プログラム、スクリプト等を作成するときには、システムフォルダの名前をハードコーティングするのではなく、きちんと環境変数を使うなり、APIを通じてフォルダの場所を取得するなりしておかないといけないですね。

ユーザープロファイルには何が入っているのか

ユーザープロファイルにはユーザー別になるありとあらゆるものが格納されているので「これが入っている」というようには言いにくいのですが、マイクロソフトが文章として出しているものを見てみましょう。(※以下の表はユーザー プロファイルに保存される設定から引用)

設定元 保存される設定
エクスプローラ エクスプローラでユーザーが定義できるすべての設定。
マイ ドキュメント ユーザーが保存したドキュメント。
マイ ピクチャ ユーザーが保存したピクチャ アイテム。
お気に入り インターネットのお気に入りの場所へのショートカット。
割り当てられたネットワーク ドライブ ユーザーが割り当てたすべてのネットワーク ドライブ。
マイ ネットワーク ネットワーク上の他のコンピュータへのリンク。
デスクトップの内容 デスクトップに保存されている項目およびショートカット。
画面の色およびフォント ユーザーが定義できるすべての画面の色および文字表示の設定。
アプリケーション データおよびレジストリ ハイブ アプリケーション データおよびユーザーが定義した構成の設定。
プリンタの設定 ネットワーク プリンタ接続。
コントロール パネル コントロール パネルでユーザーが定義したすべての設定。
アクセサリ ユーザーの Windows 環境に影響を与えるすべてのアプリケーションのユーザー独自の設定。電卓、時計、メモ帳、ペイントなどの設定が含まれます。
Windows Server 2003 ファミリ ベースのプログラム Windows Server 2003 ファミリ対応のプログラムは、プログラムの設定をユーザーごとに管理するように設計できます。そのような情報がある場合は、ユーザー プロファイルに保存されます。
オンライン ユーザー教育用のしおり Windows Server 2003 ファミリ ヘルプ システムのしおり。

「アプリケーションデータ」という部分にはほぼすべてのアプリケーション(マイクロソフト製品以外も含めて)が該当します。たいていのアプリケーションでは、ユーザー個別設定の保存は必要でしょうし、設定を保存すべき場所はユーザープロファイル以下のアプリケーションデータ(ApplicationData)フォルダなのです。

この表に明示的に書かれていないもので有名なものとしては、「送る(SendTo)」や「スタートメニュー」などもあります。デスクトップやマイドキュメントなどもそうですが、このように単にフォルダとして存在しているものに関してはそこにファイル、フォルダを放り込んであげれば普通に動作します。

たとえば、権限さえあればネットワーク越しに、特定の端末の特定のユーザーのデスクトップ上にファイルをいきなり出現させてしまうようなこともできるわけです。(いたずらはやめましょう。)

プロファイルフォルダをそのままコピーすればいいわけではない

ここで若干注意が必要なのは「レジストリハイブ」です。これを理解するためにはレジストリの構造を理解しなければならないのですが、簡単に言うとプロファイルフォルダの中には「NTUSER.DAT」という名前のユーザー個別の設定を格納したレジストリファイルが存在しているわけです。

ログオン時に、ユーザープロファイル内のNTUSER.DATが読み込まれ「HKEY_CURRENT_USER」として展開されるようになっています。

つまり何が言いたいのかというと、「単純にプロファイルフォルダの中身を丸ごとコピーしても、すべての設定が別のユーザーに引き継がれるわけではない」ということです。この辺りはユーザープロファイルの移行手段に関してのエントリで説明しようと思いますので、このエントリではこの辺で…。

レジストリ構造に関しての詳細は以下を参照してください。

All Users

ユーザープロファイルの話をするときにはAll Usersのことを抜きにすることはできません。All Usersの場所も環境変数から確認できます。

C:\>echo %allusersprofile%
C:\ProgramData

All Usersは「すべてのユーザーが共通で使う」場所になっています。わかりやすいのはスタートメニューですね。よくアプリケーションのインストールウィザードでスタートメニューに登録するときに「自分だけ/全員」なんていう選択肢があると思います。あれは結局以下のどちらにするかを選んでいたわけです。

  • 自分だけ – 自身のユーザープロファイル内のスタートメニューに登録する
  • 全員 – All Users内のスタートメニューに登録する

そのコンピューターを使う全員に見せたいのか、個別のユーザーに見せたいのかでフォルダ/ファイルの配置場所を選択する必要があるわけです。

実際に色々ファイル/フォルダを作成してみて、動きを確認してみてください。

Default User

さて、ここまでユーザープロファイルのことを見てきたわけですが、素朴な疑問として、「ユーザーの初回ログオン時にはどうするんだろう?」ということが気になると思いますが、これに関しては

  • 「Default User」のものをコピーする

というようになっています。このような仕組みになっているので「じゃぁ、Default Userの中をいろいろいじっておけば、初回ログオン時の状態をカスタマイズできるんだな?」という発想が生まれます。そしてこれは実際にうまく動きます。たとえば以下のあたりのテクニックはこの発想に基づくものです。

これをさらに発展させて

  • まず、カスタマイズ用のテンポラリユーザーを作成、ログオンする
  • そのユーザーで様々な設定変更を行う
  • 最後にカスタマイズ用のテンポラリユーザーのプロファイルをDefault Userにコピーする(エクスプローラー上ではなく、システムのプロパティ上から行った上でアクセス権の付与も行う)

というようなカスタマイズテクニックがあります。実際この方法はそれなりにうまく動くのですが、これはサポートされない方法になっています。サポートされるのはsysprepツールを使用する方法だけになっています。

ですが、sysprepを実行したらしたで、意図しない個所が不意に変更されてしまったりすることがあります。また、sysprep自体に不具合があったことなども過去ありました。なので、sysprepを実行することに抵抗がある人も多いと思います。

ですので、どこまではセーフでどこまでやったらアウトなのかを見極めつつ、独自のカスタマイズ手法を編み出して、それを使って展開していくのがSIerの腕の見せ所になるわけです。この辺りは調べてみると色々混沌としていてなかなか面白いですよ。

ただ、Windows Vista移行ではVolume Activation 2.0との絡みもあるので、sysprepとうまく付き合っていくしかないのではないか…という気がしています。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

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