Windows10リリースのせいで・・・
Windows 8.1 Proを主に使っていたところに、Windows10がリリースされたせいで、Windows10のWindows7 Proダウングレード権付を購入するハメになりました。
Microsoftは、MDTとかWDS、公式でイメージデプロイツールをリリースしていますが、ディスクイメージとsysprepで配布して、GPO適用した方が時間も含めたコストが格段に低いんです。
そんなわけで、Windows 7を触ることになりまして、諸々のアプリケーションをインストール後にイメージ作成をし、sysprepをするところで久方ぶりに問題に再会しました。このブログに残していなかった昔の備忘録を掘り起して忘れないようにしたいので記録です。
エラー概要
エラーはこれ。Sysprepをgeneralizeとoobeオプションで、実行した際に出現するエラー。
「コンピューターのsysprepを実行中に致命的なエラーが発生しました。」
そういえば、メーカー製のPCはsysprep対策をした時期があったっけ、と思ったので、コマンドプロンプトから「slmgr -dvl」を実行してWindows猶予期限リセット可能回数を確認したところ・・・
ありました。コイツです。
というわけで対策として、以下を行います。
対策
- レジストリ変更
- コマンドプロンプトからコマンド実行
- 再起動
- SkipRearmを指定したUnattend.xmlを作成
1. レジストリ変更
レジストリエディタ(regedit.exe)を開き、以下のキーを探します。
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus
その中にある以下2つのキーを、それぞれ正しい値にします。
- CleanupState : 2(16進数)
- GeneralizationState : 7(16進数)
2. コマンドプロンプトからコマンド実行
次に、コマンドプロンプト(cmd.exe)から以下コマンドを実行します。データべースの分散トランザクションサポートとか、細かい話は割愛します。
msdtc -uninstall
msdtc -install
3. 再起動
ちゃんと、優しく再起動してあげてください。
もう少しです。
4. SkipRearmを指定したUnattend.xmlを作成
sysprepにその詳細設定ファイルとなる「Unattend.xml」ファイルの最低限(64bit版)を指定。必要なのは、「<SkipRearm>1</SkipRearm>」なのですけれど、お作法に則るとこうなります。
<?xml version=”1.0″ encoding=”utf-8″?>
<unattend xmlns=”urn:schemas-microsoft-com:unattend”>
<settings pass=”generalize”>
<component name=”Microsoft-Windows-PnpSysprep” processorArchitecture=”amd64″ publicKeyToken=”31bf3856ad364e35″ language=”neutral” versionScope=”nonSxS” xmlns:wcm=”http://schemas.microsoft.com/WMIConfig/2002/State” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>
<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
</component>
<component name=”Microsoft-Windows-Security-Licensing-SLC” processorArchitecture=”amd64″ publicKeyToken=”31bf3856ad364e35″ language=”neutral” versionScope=”nonSxS” xmlns:wcm=”http://schemas.microsoft.com/WMIConfig/2002/State” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>
<SkipRearm>1</SkipRearm>
</component>
</settings>
</unattend>
もし、(多分使うことはあまりないだろうけれど)、Windows 7 Pro 32bit版に適用したいという場合には、「processorArchitecture=”amd64″」を「processorArchitecture=”x86″」にすれば使いまわせます。
こんなことを気にせずsysprepが出来るようになったから、Windows 8は楽だったんだけれどなぁ。(ボソッ)
Tips : batファイルで起動
それと別途、面倒なのでbatファイルからsysprepを起動できるように、ここでは「Start_Sysprep.bat」として以下の内容で作ります。
sysprep /generalize /oobe /shutdown /unattend:C:\Windows\System32\Sysprep\Unattend.xml
batって、カレントワーキングディレクトリで実行するので、パスが通っていなくてUnattendファイルを相対パスで指定するととそんなファイルないよとか言い始めるので、念のため。
上記で作成した「Start_Sysprep.bat」と「Unattend.xml」を「C:\Windows\System32\Sysprep」にコピーします。
以上、仕上げは「Start_Sysprep.bat」を実行します。
これで解決です。
最後に
Windows 10リリースにより、MicrosoftもSysprepの利用を非推奨にしはじめました。ですが、企業管理PCはまだまだWIndows 7が多かったりするのも現実です。このブログをご覧頂いた方が、多くのエラー排除をできるようになり、効率化の助けになることを願っています。
コメント