Skip Metro Suite の仕組み
Skip Metro Suite には、Windows 8 起動時に、自動でデスクトップを表示し、かつ、ホットコーナーを選択的に無効にする機能がある。これはどういう仕組みで実現しているのかを調べた。
Process Monitor を使用して、Skip Metro Suite がレジストリにどんな値を書き込んでいるのかを調査した結果、ある 1 つのキーのみを書き換えていることが判った。すなわち、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
である。Skip Metro Suite で、"Enable Skip Metro Suite" を有効にすると、当該キーの値が、C:\Windows\system32\userinit.exe,C:\Windows\skipmetrosuite.exe,
に変更された。無効にすると、C:\Windows\system32\userinit.exe,
になった。
Microsoft のサイトによると、レジストリ キー ...\Winlogon\Userinit
は、「ログオン時に、シェルの前にプログラムを起動する方法」で使われるものらしい。Windows 起動時にプログラムを実行する方法は、他にもいくつかあり、たとえば、スタートアップフォルダにプログラムへのショートカットを入れておくというものがある。...\Winlogon\Userinit
に登録しておくという方法は初耳だ。きっと、この方法でないと、Metro こと Modern UI のスキップは実現できないのだろう。
そうして、Windows 起動時に実行される skipmetrosuite.exe というファイルは、Skip Metro Suite により、C:\Windows\
フォルダに自動生成される。このプログラムが、デスクトップを表示したり、ホットコーナーを操る役割を担当しているに違いない。Windows 起動後、タスク マネージャー を閲覧したところ、このプログラムは見当たらなかった。役割を終えると、自動で終了するようだ。ホットコーナーの無効化は、おそらく「四隅にある不可視なウィンドウを閉じる」というような操作なのだろう。
そしてようやく
以下の条件を満たすことで、PC の電源を入れたあと、自動でスリープ状態に移行する環境が実現した。
control.exe userpasswords2
で自動ログインを有効にする- Skip Metro Suite で自動デスクトップを有効にする
C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
に、時限式スリープ.js へのショートカットを置いておく