サポート技術情報(文書番号:418429)は、WindowsXPの「電源オプション」の動作仕様と制限事項を説明したものだ。まずは、仕様と制限を簡単にまとめてみよう。
■電源オプションの動作仕様
レジストリの書き込みアクセス権の有無によって、コンピュータの管理者は電源オプションを参照したり変更したりできるが、制限ユーザーは変更できない。
■電源オプションの制限事項@
制限ユーザーは電源オプションを設定できないため、直前にログオンしていた管理者の設定を引き継いでしまう。複数の管理者がいて、異なる電源オプションを構成していた場合、直前にログオンしていた管理者の設定によっては、あとからログオンしたユーザーの電源管理機能が意図しない動作をする可能性がある。
■電源オプションの制限事項A
電源オプションの設定内容はユーザーのレジストリから読み出されて表示されるため、実際にシステムに適用されている電源管理設定と異なる場合がある。
そして、「ユーザーのみなさまの混乱を招く側面がある」(原文より抜粋)として、将来のバージョンのWindowsで改善していくと結んでいる。単なる製品の問題や障害情報ではなく、今後の改善を期待させるサポート技術情報は珍しい。
それでは、電源オプションの制限事項がなぜ発生するのか、電源オプションの内部動作を詳細に解説しよう。コントロールパネルの電源オプションの表示には、次の3つのレジストリキーが関係している。
@カレントユーザーの電源オプション
HKEY_CURRENT_USER\Control Panel\PowerCfg
Aデフォルトの電源オプション
HKEY_USERS\.DEFAULT\Control Panel\PowerCfg
Bシステム共通の電源オプション
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows\CurrentVersion\Controls Folder\PowerCfg
例えば、新しく登録したユーザーで初めてWindowsにログオンすると、デスクトップやアプリケーションの設定などが「C:\Documents and Settings\<ユーザー名>」フォルダに作成される。このフォルダは「ユーザープロファイルフォルダ」と呼ばれる。
ユーザープロファイルのうち、デスクトップやスタートメニューの構成などは「C:\Documents and Settings\Default User」フォルダの内容がコピーされて作成されるのに対し、レジストリは「HKEY_USERS\.DEFAULT」以下のレジストリツリーがコピーされて、ユーザープロファイルフォルダに「Ntuser.dat」という名前の隠しファイルとして保存される。
レジストリ「HKEY_USERS\.DEFAULT」には、「Aデフォルトの電源オプション」の場所に6種類の電源管理設定があらかじめ定義されていて、設定番号(数値ID)「0」の「自宅または会社のデスク」が既定値に指定されている(表1)。
設定名 | 自宅または会社のデスク | ポータブル/ラップトップ | プレゼンテーション | 常にオン | 最小の電源管理 | バッテリの最大利用
|
---|
設定番号(数値ID) | 0 | 1 | 2 | 3 | 4 | 5
| モニタの電源を切る(AC) | 20分後 | 15分後 | 行わない | 20分後 | 15分後 | 15分後
| モニタの電源を切る(DC) | 5分後 | 5分後 | 行わない | 15分後 | 5分後 | 1分後
| ハードディスクの電源を切る(AC) | 行わない | 30分後 | 行わない | 行わない | 行わない | 行わない
| ハードディスクの電源を切る(DC) | 10分後 | 5分後 | 5分後 | 30分後 | 15分後 | 3分後
| システムスタンバイ(AC) | 60分後 | 20分後 | 行わない | 行わない | 行わない | 20分後
| システムスタンバイ(DC) | 5分後 | 5分後 | 15分後 | 行わない | 5分後 | 2分後
| システム休止状態(AC) | 行わない | 180分後 | 行わない | 行わない | 行わない | 45分後
| システム休止状態(DC) | 15分後 | 120分後 | 120分後 | 行わない | 180分後 | 60分後
| プロセッサ調整(AC) | NONE | ADAPTIVE | ADAPTIVE | NONE | ADAPTIVE | ADAPTIVE
| プロセッサ調整(DC) | ADAPTIVE | ADAPTIVE | DEGRADE | NONE | ADAPTIVE | DEGRADE |
表1● WindowsXPには、モニタやハードディスクの電源状態を制御する6種類の設定がプリセットされている。ノートブックPCなどでは「モニタの電源を切る(DC)」などのバッテリ動作時設定が有効になる
どのユーザーも最初のログオン時に6種類の電源オプション構成を選択できるうえ、全員がそろって「自宅または会社のデスク」を選択した状態になるのは、ユーザープロファイルの作成時に「Aデフォルトの電源オプション」が「@カレントユーザーの電源オプション」にコピーされるためだ。この動作を逆手にとって、ユーザーを登録する前に「Aデフォルトの電源オプション」キーを編集しておけば、任意の電源オプションを使用させることも可能になる。
さて、ユーザーがコントロールパネルの電源オプションで参照できる「電源設定」のリストは、次の手順で2つのレジストリキーを参照・表示している。
@「@カレントユーザーの電源オプション」から、最小の設定番号「0」を持つレジストリキー「HKEY_CURRENT_USER\Control Panel\PowerCfg\PowerPolicies\0」
を開く(画面1)。「カレントユーザー」は、現在ログオンしているユーザーになる。レジストリキーのキー名は設定番号そのもので、基本的には連番になるが欠番になることもある。
|
画面1● 「カレントユーザーの電源オプション」は、レジストリ「HKCU\Control Panel\PowerCfg\PowerPolicies」に保存されている。このユーザーは独自の電源オプション構成を作成しているので、プリセットの設定番号「0」〜「5」に加えて、設定番号「6」の構成が追加されている |
|
A「Bシステム共通の電源オプション」から、同じ設定番号を持つレジストリキー
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\ControlsFolder\PowerCfg\PowerPolicies\0」
を開く(画面2)。「@カレントユーザーの電源オプション」と異なり、設定番号は必ず連番になる。
|
画面2● 「システム共通の電源オプション」にも、設定番号「0」〜「6」の構成が保存されている。ほかに独自の電源オプション設定を作成したユーザーがいなければ、設定番号はカレントユーザーとシステム共通の電源オプションで一致する |
|
B手順Aで同じ設定番号のキーがあれば、有効な構成情報と判断して「@カレントユーザーの電源オプション」から表示名を取り出し、「電源設定」のリストに追加する。同時に詳細な設定内容も「@カレントユーザーの電源オプション」から読み出す。
C設定番号「1」以降についても、手順@からBを繰り返す。
もし「@カレントユーザーの電源オプション」にある設定番号が「Bシステム共通の電源オプション」に登録されていなかったら、その設定番号とそれより大きい設定番号を持つ構成情報は「電源設定」のリストから除外される。例えば、「常にオン」に対応する設定番号「3」が「Bシステム共通の電源オプション」に登録されていないことがわかると、設定番号「4」以降のチェックはスキップされ、「常にオン」「最小の電源管理」「バッテリの最大利用」が「電源設定」のリストに表示されなくなる。
このように、電源オプションの構成情報は基本的に「@カレントユーザーの電源オプション」からのみ読み込まれる。「Bシステム共通の電源オプション」は有効な設定番号のマッチングだけに使用され、詳細情報の読み込みや整合性のチェックには使用されないことに注意しよう。
今度は新しい電源オプションを構成する場合について、詳細な内部動作を追いかけてみよう。AdministratorsグループまたはPower Usersグループに所属するユーザーは、自分で新しい電源オプションを構成できる。新しい構成情報には「Bシステム共通の電源オプション」の中で連続する最大の設定番号が割り当て・保存され、続いて同じ設定番号で「@カレントユーザーの電源オプション」にも保存される。
例えば、最初に管理者「user1」が「user1用」という名前で新しい構成を作成し、次に管理者「user2」が「user2用」という構成を作成すると、「@カレントユーザーの電源オプション」と「Bシステム共通の電源オプション」は表2のようになる(画面3)。「@カレントユーザーの電源オプション」が必ずしも連番にならないのは、このような理由だ。
|
画面3● 2人のユーザーがそれぞれ独自の電源オプションを1つずつ作成すると、「Bシステム共通の電源オプション」にだけ両方の設定が保存される |
|
|
表2● 管理者「user1」と「user2」が新しい構成を作成した場合の「@カレントユーザーの電源オプション」と「Bシステム共通の電源オプション」の状態 |
|
「Bシステム共通の電源オプション」のレジストリキーは、制限ユーザー(Usersグループ)に「読み取り」のアクセス権だけを与えているため、制限ユーザーは既存の6種類の電源オプションを参照できても、変更や作成・保存はできない。その結果、電源オプションの設定はユーザープロファイル作成時のまま変わらず、管理者が設定した電源オプション設定に気が付くこともない。これが「電源オプション」の制限事項Aの理由の1つである。
制限ユーザーでも変更できるようにするには、レジストリエディタで
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\Controls Folder\PowerCfg」キーに「Power Users」と同じアクセス権を与えればよい(画面4)。
|
画面4● Usersグループに「値の設定」「サブキーの作成」「削除」のアクセス権を与えてPower Usersグループのユーザーと同等の権限を持たせると、電源オプションを設定できるようになる |
|
制限事項Aのもう1つの理由については、構成情報はあくまで「@カレントユーザーの電源オプション」から読み込まれるので、ほかのユーザーが独自に作成した電源管理オプションは、決して自分の電源管理オプションには表示されないことがあげられる。「user1」にとっての「user2用」構成情報のように、「Bシステム共通の電源オプション」にしか存在しない電源の設定は「user1」の「電源設定」のリストに表示されることはない。
さて、いよいよ問題の核心に迫ろう。実は、WindowsXPでは「@カレントユーザーの電源オプション」「Aデフォルトの電源オプション」「Bシステム共通の電源オプション」に加えて、「C実際にシステムに適用される電源管理オプション」も利用されている。レジストリキーのパスは「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power」で、最終的にWindowsXPの電源オプションを決定する重要なレジストリキーだ(画面5)。
|
画面5● ユーザー別やシステム共通の電源オプション構成の保存とは別に、システムが実行中の電源オプション構成を保存するレジストリキーが存在する |
|
「C実際にシステムに適用される電源管理オプション」は、次のルールに従って特定ユーザーの既定の電源オプション設定が有効な値として設定される。
- Power UsersグループまたはAdministratorsグループに所属するユーザー
- 複数のユーザーがログオンした場合、最後にログオンしたユーザー
- コンソールから直接ログオンしたユーザー
|
この動作を確認するには、リモートコンピュータからレジストリを監視しながら、管理者「user1」のログオン後に、管理者「user2」のアカウントを割り当てたサービスを起動したり、「user1」のログオン中に、リモートデスクトップを使って「user2」でログオンしたりすればよい。
「C実際にシステムに適用される電源管理オプション」のレジストリキーは、Power UsersグループやUsersグループに対して「読み取り」の権限しか与えていないので、普通に考えればPower Usersグループのユーザーも電源オプションを変更できないように思える。
どうやらユーザーが電源オプションの設定を変更すると、ユーザーではなくシステム自身によって「Bシステム共通の電源オプション」から「C実際にシステムに適用される電源管理オプション」に設定が転記されるようで、レジストリのアクセス権の問題が発生するのは「Bシステム共通の電源オプション」だけである。
制限ユーザーがログオンしても「Bシステム共通の電源オプション」を変更できないので、「C実際にシステムに適用される電源管理オプション」も変更されることはない。したがって、制限ユーザーがログオンする前にログオンしていた管理者の既定の電源オプション構成が、管理者がログオフしてからも有効のままになるのである。
さて、「電源オプション」の制限事項@とAの根本的な原因は、次のようにまとめることができる。
- あるユーザーが定義した電源オプションの設定は、別のユーザーが見ることも知ることもできない。
- ユーザーが定義した電源オプションの設定は、ログオンの順序というランダムな事象に依存して「C実際にシステムに適用される電源管理オプション」に採用される。
- 現在システムが実行している電源オプションの設定は「C実際にシステムに適用される電源管理オプション」に書き込まれているのに、ユーザーは「@カレントユーザーの電源オプション」から取得した設定しか参照できない。
- 「C実際にシステムに適用される電源管理オプション」は、ユーザーによって読み取られることのないレジストリキーである。
|
ところで、WindowsXPの動作仕様としては、最後にログオンした管理者の既定の電源オプション設定が「C実際にシステムに適用される電源管理オプション」に記録され、次回コンピュータ起動時にも適用されるはずだが、WindowsXP Service Pack(SP)1/SP1aでは「既知の障害(文書番号:818133)」のために設定が反映されない。このため、WindowsXPが起動してから管理者がログオンするまでの間、電源管理機能が意図しない動作をすることがある。
【参考サポート技術情報】
■WindowsXPを起動すると、既定の電源管理ポリシーが適用されません
文書番号:818133
|