DirectX と Windows XP
DirectX と Windows XP
このトピックには、Microsoft® Windows® XP で Microsoft DirectX® を使うためのヒントが記載されている。
- 複数ユーザーの扱い
- 簡易ユーザー切り替え
- ファイルの格納
- レジストリへの格納
複数ユーザーの扱い
Windows XP を使うと、同時に複数のユーザーが 1 台のコンピュータにログオンできる。アプリケーションで同時に複数のインスタンスを実行できない場合、他のインスタンスが実行中かどうかを確認してから、新しいインスタンスを開始する必要がある。デスクトップ セッションにまたがって FindWindow は使うことはできない。FindWindow は、現在のセッション内でのみ動作する。
アプリケーションのインスタンスが既に実行中かどうかを確認するには、グローバル ミューテックスを使う。インスタンスが実行中の場合、FindWindow を使って、そのインスタンスが現在のセッションにあるかどうか確認して、ウィンドウを復元できる。現在のセッションにない場合、アプリケーションが使えないことをユーザーに通知すればよい。
簡易ユーザー切り替え
簡易ユーザー切り替えを使うと、セッション間でのユーザーの切り替えが可能になる。ユーザーは、他のユーザーがセッションを開始するためにアプリケーションを終了したり、ログアウトしたりする必要はない。その代わり、簡易ユーザー切り替えを使うことで、他のユーザーがコンピュータにログオンし、作業を実行できる。
DirectX アプリケーションは、このような状況に対応できなければならない。ユーザー セッションが変更されると、Windows は WM_WTSSESSION_CHANGE メッセージを送信する。このメッセージを受信するためには、アプリケーションは WTSRegisterSessionNotification を呼び出してウィンドウ ハンドルを登録する必要がある。
注 デフォルトでウィンドウをフル スクリーンに設定する Microsoft DirectDraw® および Microsoft Direct3D® アプリケーションでは、簡易ユーザー切り替えは許可されない。
ファイルの格納
Windows XP には、管理者と制限付きユーザーの 2 種類のユーザーが存在する。管理者は、すべてのハード ディスクに対する読み取り/書き込みアクセス権を持っている。制限付きユーザーは、ハード ディスク上でデータの書き込みができる領域が一部のみに制限される。
制限付きユーザーが書き込みアクセス権を持っているハード ディスクの領域、つまり DirectX アプリケーションが制限付きユーザー用に情報を格納できる唯一の場所は、次の (デフォルトの) ディレクトリである。
CSIDL 値 | フォルダ |
---|---|
CSIDL_COMMON_DOCUMENTS | C:\Documents and Settings\All Users\Documents |
CSIDL_PERSONAL | C:\Documents and Settings\<username>\MyDocuments |
CSIDL_COMMON_APPDATA | C:\Documents and Settings\All Users\Application Data |
CSIDL_LOCAL_APPDATA | C:\Documents and Settings\<username>\Application Data |
インストールはデフォルトで Program Files ディレクトリ (CSIDL_PROGRAM_FILES) に対して行われるため、管理者のみがアプリケーションをインストールできる。制限付きユーザーがアプリケーションをインストールしようとした場合は、通知メッセージ ボックスを表示し、インストールを行うには管理者権限が必要なことをユーザーに知らせること。
これらの場所はすべて、ハードコーディングするのではなく、適切な CSIDL を SHGetFolderPath 関数に渡すことによって決定する。
アプリケーションが生成するデータ ファイルは、制限付きのユーザーを考慮して格納する。次の表を参照してデータの格納場所を決定すること。
データにアクセスできるユーザー | CSIDL 値 | ユーザーによるデータのロード・表示・変更 | 例 |
---|---|---|---|
すべてのユーザー | CSIDL_COMMON_APPDATA | 不可 | システム構成 |
現在のユーザー | CSIDL_LOCAL_APPDATA | 不可 | キーボードのバインド |
すべてのユーザー | CSIDL_COMMON_DOCUMENTS | 可 | 保存されている共有ファイル |
現在のユーザー | CSIDL_PERSONAL | 可 | 保存されているプライベート ファイル |
注 ユーザーがデータのロード、表示、変更を行うようになっている場合は、アプリケーションにファイルの関連付けとアイコン表示が設定されていることを確認する。
レジストリへの格納
レジストリに正しくデータを格納するには、次のガイドラインに従うこと。
インストールを実行するためには管理者権限を必要とする。
各レジストリのキー項目のデータは 64 KB 未満とする。
レジストリ データは HKEY_LOCAL_MACHINE (HKLM) または HKEY_CURRENT_USER (HKCU) に格納できる。
HKLM
- 管理者のみがアクセス権を持っているので、制限付きユーザーがアクセスする必要がある情報は HKLM には格納しない。
- ほとんどのユーザーがアクセスする必要がないデータがある場合は、HKLM に配置する。
- コンピュータの構成データは HKLM に格納する。
HKCU
- 管理者と制限付きユーザーの両方がアクセスできる。
- 制限付きユーザーがアクセスする必要があるデータは HKCU に配置する。
- ユーザー構成データは HKCU に格納する。
- 最初にゲームを開始したときに、HKCU のレジストリ キーを確認し、デフォルト値が存在することを確かめる。