Windows7にEWFを導入する

EWFを導入して1年ほど安定して動いてくれていた愛用のEeePC 901ですが、先日Cドライブが謎のディスクエラーを吐きだし、ディスクチェックしても直らなかったので、これを機にフォーマットしてWindows7を導入しました。
しかし、XPと比べるとスペック不足が目立ち、また換装したSHD-DI9M16Gがプチフリを連発するのでイライラは募り、結局XP+EWFの環境に戻そうと考えていました。
(久しぶりにLinuxでも良かったんだけど)

と、そこに、Windows7でもEWFが動くとの記事を見つけたので、ダメ元で試してみました。

EWF on Windows 7 32-bit or 64-bit (Enhanced Write Filter)

まずは情報収集ってことで簡単に読めるように日本語にしたものを貼りつけておきます。
これを元に行っていきます。


さて、まずewf.sysとewfmgr.exeの入手先についてですが、書かれたリンク先からはどうもダウンロードできなかったので、それっぽいのを探しました。
http://www.microsoft.com/windowsembedded/en-us/downloads/default.mspx
へジャンプし、①の「Download a Free Product Trial」の欄から、Windows Embedded Standard 7のリンクをクリック。
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=2287a698-746c-4f80-b9ad-79435f4cea92
に飛ばされるので、ここからダウンロード。

32ビット用には
Standard_7_32bit\Standard_7_32bit.part1-6
64ビット用には
Standard_7_64bit\Standard_7_64bit.part1-7

が用意されてるけど、今回ダウンロードしたのはツールキットのほう。
Standard_7_Toolkit\Standard_7_Toolkit.part01.exe
Standard_7_Toolkit\Standard_7_Toolkit.part02.rar

Standard_7_Toolkit\Standard_7_Toolkit.part08.rar

をダウンロードし、先頭のexeを実行するとStandard_7_Toolkit.isoが結合されます。


DaemonToolsなどで中を見て、
\DS\Packages\FeaturePack\x86~winemb-enhanced-write-filter~~~~6.1.7600.16385~1.0\WinEmb-Enhanced-Write-Filter.cab
の中から2つのファイルを入手。
書いてある通りに、ewfmgr.exe%windir%\system32\ewf.sys%windir%\system32\driversにコピーします。


次はレジストリに記述するドライブ情報を入手します。

まずはDiskSignatureの値を得るため、diskpartでディスクの詳細を表示します。

コマンドプロンプトを開き、
diskpart
と入力すると、UACの確認が出るので続行します。

あとは
select disk 0
detail disk
と入力し、Cドライブの詳細を表示させます。

BUFFALO SHD-DI9M ATA Device
ディスク ID: 074BAF14
種類 : ATA
状態 : オンライン
パス : 1
ターゲット : 0
(省略)

次にDドライブです。
select disk 1
detail disk

でDドライブの詳細が表示されます。

ASUS-PHISON SSD ATA Device
ディスク ID: 000C9FF0
種類 : ATA
状態 : オンライン
パス : 1
ターゲット : 1
(省略)

ここで必要なのはディスクIDなので、C、DともにIDの部分をメモしておきます。


次にdiskparでPartitionOffsetの値を得ます。
diskparは標準で搭載されていないので、
https://kb.wisc.edu/images/group14/4556/diskpar.exe
からダウンロードしました。

コマンドプロンプトで
diskpar -i 0
と叩いてみたのですが、「Open Drive Failed」と表示されてうまくいきません。
そこで、コマンドプロンプトを管理者権限で実行してから入力するとうまくいきました。

---- Drive 0 Geometry Infomation ----
(省略)
---- Drive Partition 0 Infomation ----
StatringOffset = 32256
PartitionLength = 15973461504
HiddenSectors = 63
PartitionNumber = 1
PartitionType = 7

同様にDドライブも所得します。

diskpar -i 1

---- Drive 1 Geometry Infomation ----
(省略)
---- Drive Partition 0 Infomation ----
StatringOffset = 32256
PartitionLength = 8068967424
HiddenSectors = 63
PartitionNumber = 1
PartitionType = 7

両ドライブともに「StatringOffset」の値が必要なので、これをメモしておきます。


そして次はレジストリの追加です。
レジストリに関しては参照元のサイトに飛んで、添付されてる「Win7ewf.txt」をダウンロードし、拡張子をregに変えるのが確実です。
ただ、今回はDドライブにもEWFを適用したかったので、最後の部分に若干の手直しをしました。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ewf\Parameters\Protected\Volume0]
"Type"=dword:00000001
"Enabled"=dword:00000001
"CompareBeforeAlloc"=dword:00000000
"DiskSignature"=dword:00000000
"PartitionOffset"=hex(b):00,00,00,00,00,00,00,00
"ArcName"="multi(0)disk(0)rdisk(0)partition(1)"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters\Protected\Volume1]
"Type"=dword:00000001
"Enabled"=dword:00000001
"CompareBeforeAlloc"=dword:00000000
"DiskSignature"=dword:00000000
"PartitionOffset"=hex(b):00,00,00,00,00,00,00,00
"ArcName"="multi(0)disk(0)rdisk(1)partition(1)"


参照元のサイトではArcNameの欄を消してしまったようですが、今回は両ドライブともにEWFを有効にするので追加しました。

このレジストリを追加し、レジストリエディタで
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ewf\Parameters\Protected\Volume0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ewf\Parameters\Protected\Volume1]
へアクセスし、先程メモした2つの値を入力します。
Volume0はCドライブ、Volume1はDドライブとなります。

注意書き通り、DiskSignature値は16進数で、PartitionOffset値は10進数で貼り付けます。

これで完成のはず。

最後にbatファイルを作成すればOK。
ewfmgr c: /commit
ewfmgr d: /commit

代わりにEWF支援ツールを使ってもOKですね。
愛用しているEWFTool起動してみたら無事起動しました。(ewfyはエラーで使用できず)
ただ、ショートカットをスタートアップに入れ、管理者権限で動作するようにしてみたのですが、起動時に動作せず。
暫定的に、タスクスケジューラでログオン時にEWFToolが起動するように設定して対応しました。

使用してみた感じとしては、XPの時と変わらず快適に使えるのですが、さすがに空きメモリ量はXPの時より少なくなっています。
また、Windowsを維持するのに必要なメモリ量も増えているでしょうからEWFに割けるメモリ量も減るでしょうね。

ともあれ、Windows7でEWFの快適な環境が築けるのは思いもしませんでした。
しばらくはこの環境で頑張ってみたいと思います。


※再起動を繰り返していると、たまに修復スタートアップが起動してとんでもなく時間を食ってしまうことがあります。
その場合はコマンドプロンプトで
bcdedit /deletevalue recoveryenabled
を入力して無効にすればいいようです。

※※上の処理を行なった後、Windowsエラー回復処理が表示されてしまう場合、以下の処理を行えば回避できるようです。
bcdedit /set {default} bootstatuspolicy ignoreallfailures

【EWF】Enhanced Write Filter【XP専用】の410さんの書き込みを参考にさせていただきました。

コメント(2)

ツボック 返信

メ-ル送りました

自由人 返信

 初めまして、自由人と申します。

 こちらの記事を参考にWinodows7でEWFを使用することができるようになりました。大変ありがたく思っております。

 ところで一つ質問があります。EWFを導入している状態でも休止状態(ハイバネーション)は使用できていますか?
 当方、以前は休止状態を使用できたのですが、EWFを導入した後に休止状態への移行ができず即復帰してしますのです。

 よろしくお願いいたします。

コメントする