Windows SteadyStateによるディスク保護にハマってみた

Windows SteadyState を使って、ディスク保護をオンにするとき、次のようなメッセージが表示されることがある。

Windows ディスク保護をオンにするには、その前にハードディスク
を最適化する必要があります。ハードディスクを最適化し、再試行し
てください。

「そうなんですか」ということで、ディスクの最適化を実行しようとすると、次のようなメッセージが表示されることがある。

このプログラムは実行されません

このプログラムはグループポリシーによりブロック
されています。詳細については、システム管理者に問
い合わせてください。
「そうなんですか」ということで、システム管理者に問い合わせる…。
それ、僕です。orz
再インストールしてしまえば、ディスク保護をオンにできるのは確認済みなんだけど、今回結構な台数で発生したので、再インストール以外の方法で回避できないか調べてたところ、うまい方法を見つけた。
今、まさにこの問題で困っている人のためのショートカット。 その後、ディスク保護をオンにする。
#でも、これでダメなのもありました…。
やってみたことは次のとおり。

再起動して再度ディスク保護をオンにする

ディスク保護のオンを実行したところ、同じメッセージが出ました。
最適化の実行についても同じメッセージが出ました。

Windows SteadyState をアンインストールして最適化を実行する

最適化の実行で、同じメッセージが出ました。

(最適化の実行はグループポリシーで制限されているので)Group Policy Clientサービスを停止させてみる

サービスの停止ができませんでした。

Windows PEの起動CD(id:hykt:20090204を参照)で起動して最適化を実行する

Windows PEの起動CDの中にはdefragコマンドが含まれていないので、このCDで起動した後、C:\Windows\System32\defrag.exeを実行したところ、「dllがないから実行できない」という内容のエラーが表示されました。

セーフモードで最適化を実行する

Windows起動時に[F8]キーを押してブートオプション画面を表示させ、セーフモードで起動して、defragコマンドを実行してみた。
すると、最適化が実行できた!
最適化の終了後、再起動してディスク保護をオンにしたところ、無事処理された!!
「よっしゃー」ということで、このトラブルが発生していた8台のPCで、早速作業開始。
そして、5台はこれで解決できた。
ただし、残りの3台はやはりディスク保護のオンで再びエラーになった。
諦めきれないので、セーフモードで実行したdefragコマンドに、-wオプションを付けて完全な最適化を実行してみた*1
しかし、結果はダメ。再びエラー。

キャッシュファイルのサイズと連続した空き領域の関係?

Windows SteadyState について説明しているWebページ*2によると…。
キャッシュファイルは空き容量の50%(最大40GB)のサイズで作成されるとのことで、例えば空き容量が30GBの場合15GBのキャッシュファイルが作成される。
ひょっとして、このキャッシュファイルの容量の分だけ、連続した空き領域が必要なんだろうか?
ディスク保護がうまくいかないPCで、セーフモードのdefragコマンドで分析してみたところ、次の結果であり、確かに上の条件を満たしていなかった。
ボリュームサイズ 74.20GB
空き領域 31.47GB
空き領域の最大の範囲 15.47GB
次にディスク保護がうまくいったPCで、同様に分析してみたところ、次の結果であり、上の条件を満たしていた。
ボリュームサイズ 74.20GB
空き領域 21.16GB
空き領域の最大の範囲 19.92GB
それじゃ…ということで、ディスク保護がうまくいかないPCで、不要なファイルやアプリを削除して、再び最適化を実行。
次の状態になった。
ボリュームサイズ 74.20GB
空き領域 30.57GB
空き領域の最大の範囲 19.54GB
これなら条件を満たしているので、ディスク保護がうまくいくかもしれないので試してみたところ、ダメ。
…ということは、この条件以外にも、何かあるんだろうか…。
ここまで調べて Time Up
仕方がないので、これら3台のPCは再インストールすることにした…とほほ。

*1:デフォルトでは、サイズが64MBよりも小さいファイルしか、最適化の対象にならない。

*2:http://www.microsoft.com/japan/windows/products/winfamily/sharedaccess/support/windowsdiskprotection.mspx