破損してマウントできないHDDからデータを復元する

起動中にブルースクリーン(UNMOUNTABLE_BOOL_VOLUME)になってしまうパソコンからのデータ救出。起動途中でブートパーティションを認識できなくなるために、エラーとなってしまいます。
試しに他のパソコンにHDDを接続して、CrystalDiskInfoで確認するとHDDで脱落セクタが発生しています。HDD内のパーティションは認識しているのですが、重要なセクタが保存不可能な状態になってしまったようで、ファイルシステムとして認識できずマウントできない状態になっています。
HDD復旧サービスを頼むと10万前後の支出になりますが、そこまで重要なデータが入って居る分けでもありません。HDDを認識しない(基盤故障など)、ディスクが回転しない(モーター故障)なんかの場合には個人では手も足も出ませんが、今回は認識しているし一部にはアクセス出来ています。そこで、個人で手が届く範囲で復仇作業を実施してみます。

何らかの方法で別のPCに接続

今回はHDDをUSBに接続するアダプタを使用。容量が大きいのでUSB3.0に対応している物を持っていると便利ですが、無ければ内蔵HDDとしてSATAに接続してしまうのがよい。

HDDのRAWデータを複製する

まずは物理HDDからRAWデータを読み出します。ここではHDDRawCopyと言うツールを使いました。このツールは破損領域があっても、CRCエラーを出力しながら読み込める範囲でRAWデータを複製してくれます。

HDDRawCopyPortableを起動して変換するHDDを選びます。HDDを選んだらContinueで進みます。

次に出力先としてFileを選びます。Fileをダブルクリックするとダイアログが開くのでファイル名を入力してください。ファイル液式はimgcではなく、imgを選択してください。出力先を決めたらContinueで進めます。

設定の確認画面になります。内容に間違いが無ければStartをクリックしてください。HDDのRAWデータがファイルに変換されていきます。エラーの状況が酷い場合には、変換にはそれなりに時間がかかります。数日単位になる場合も考えられますので、気長に待ってください。

RAWデータを仮想HDDに変換する

RAWデータのままではWindowsで扱うことが出来ません。Windowsでマウントできる仮想HDD形式である、vhd形式に変換します。
ここではqemu-img for Windowsを使いました。qemu-img.exeはqemuと言う仮想マシンに付属するディスクイメージのメンテナンスツールです。qemu-img.exe単体でもダウンロード出来ます。

qemu-imgをダウンロードして適当なフィルダに展開します。
展開したフォルダに移動して以下のコマンドを実行します。

qemu-img.exe convert -O vpc RawDiskImage.img RawDiskImage.vhd

これでvhd形式のファイルに変換されます。

Windowsから仮想HDDをマウント

出来上がった仮想HDDをWindwosでマウントしてしまうと、一部が書き替わってしまいます。作業前の状態に戻して再実行したいときに困るので、最初にvhdファイルを複製しておきましょう。

コントロールパネルの管理ツールから「コンピュータの管理」を起動します。

ツリーから「記憶域」のディスクの管理を選択したあと、「操作」から「VHDの選択」を選んでください。ここで先ほど作られたRawDiskImage.vhdを選択すると、HDDとしてマウントされドライブレターが追加されています。

今回はこの時点で既に読める状態に回復していましたので、chkdskで修復を試みたり、パーティション復元ツールで修復を試みたり、削除ファイル復元ツールで復元を試みたりと言った事は行っていません。必要なら、それらを実施して修復を試みてください。

ちなみにRAID5やRAID6を使っていた場合でも、HDDのRAWイメージを作成した後、ReclaiMe Free RAID recoveryのようなツールを使えば修復できる場合があります。そちらは今のところ試したことが無いけどね。

Windows 7からWindows 10への移行の難しさ

Windows 7からWindows 10への移行を、Windows XPからWindows 7への移行と同じように捉えていると、足下をすくわれる。Windows 10以降ではサポート体制や製品ライフサイクルが大きく見直されており、それに伴って従来のようにOSバージョンを固定にした塩漬け運用が難しくなっている。

Windows 10と、それ以前のMicrosoft製品との大きな違いは、OSの開発体制が移行したことにある。アジャイルデベロップメントとか、エクストリーム・プログラミングとか、継続的インテグレーションとか、ラピッドデベロップメントとか、ITの分野にいるなら聞いたことがあるはずだ。OS自体がアジャイルな開発体制に移行したことにより、Windows 10では、OSの新機能を何年かおきの新製品発売やサービスリリースを待たず、半年ごととのメジャーアップデートで提供する体制になった。

これに伴って大きく変更されたのが、アップデートを適用していないWindows 10に対するサポート提供だ。半年ごとに提供するメジャーアップデートを適用していない場合のサポート期限は18ヶ月と短い。Windows7 SP1の9年と比較しても極端に短い。

従来はOSのバージョンを固定にしたり、特定のサービスパックやWindows Updateの適用を避けることで、Windowsの機能更新にともなって表面化した不具合に対処していた場合がある。10より前は、それでもセキュリティアップデート等は提供され続けるので、OSのバージョンを塩漬けにしても問題なく運用できていたが、Windows 10以降では18ヶ月以内に対策を行うことが最低限もとめられる。

現状、新たにWindows 7を購入して使い続けているなら、相当な危機感を持って欲しい。20万円以上のパソコンの法定耐用年数は4年間、10~20万円以下なら3年間となる。2年以内に廃棄して特別損失を計上することを承知の上で、新たにWindows 7を買い続けているのは異常だ。

Windows 10の発売から既に2年以上経過し、Windows 7のサポート期限も分かっていたはずだ。にもかかわらずWindows 7にバージョンを固定し続けているというのは、Windows 10がメジャーアップデートするスケジュールに追従できるだけの開発能力が既に失われている事を示している。

自社開発していたソフトウェアを、市販のパッケージソフトウェアをそのまま使う形に置き換える事で、自社で開発するソフトウェアの数を減らす。あわせて、社内SE(特に開発寄りの)人材拡充をはかって、自社開発ソフトウェアの継続的保守開発に対応できる情報システム部署として再生をはかったほうがよい。

PS1.
Windows 10 Enterprise LTSC(Long-Term Servicing Channel)と言うランセンスを購入すれば10年間バージョンを固定にしてサポートを受けることが出来ます。一般的なProfessionalに比較して、1ライセンス辺り3万円ほど余計に支出することになりますけど。

PS2.
実はWindows 7 SP1で7年間バージョンを固定できたのは単に運が良かっただけ。もしWindows 7 SP2がリリースされていたなら、次期サービスパックリリースから24ヵ月でSP1はサポート終了していた。

参考:
Windows 7サポート終了まで2年 ユーザーはどうする?
OS にはサポート期限があります!
Windows ライフサイクルのファクト シート
https://internet.watch.impress.co.jp/docs/news/1073028.html

Outlook上で検索してもメールやメールアドレスが見つからない

Outlookの検索機能はWindows OSの提供するファイル検索機能を使用しています。何らかの理由でWindowsの検索用インデックスが破損していたり、あるいはインデックスの収集が行われていないと、Outlookの検索機能も動作しなくなります。

Windowsの検索機能はコントロールパネルの「インデックスのオプション」から設定出来ます。

「インデックスを作成する対象」のリストから「Microsoft Outlook」を選択して「詳細設定」のボタンを押して下さい。ここで「再構築」ボタンを押すと、既存のインデックスデータを破棄して再作成を開始します。

もしインデックスを作成する対象のリストに「Microsoft Outlook」が表示されていないなら「変更」ボタンをクリックして下さい。「インデックスが作成された場所の変更」のリストにチェックを付けると、インデックスを作成する対象としてリストに表示されます。

インデックスデータの再構築には暫く時間がかかります。半日ほど電源を入れたままにして様子を見て下さい。次第にきちんと検索にひっかかるメールの数が増えていくはずです。

Outlookを起動すると「このフォルダのセットを開けません。」と言うエラーになる

Outlookを起動したときに、下図のように「Microsoft Outlookを起動できません。Outlookウィンドウを開けません。このフォルダーのセットを開けません。予期しないエラーが発生しました。」というメッセージが表示されてOutlookが起動しなくなる場合があります。

これはOutlookの既定のpstファイルが壊れたり、あるいは設定中にエラーが発生したことにより既定のpstファイルが設定されていない事が原因でおこります。

コントロールパネルにあるユーザーアカウント→Mail(Microsoft Outlook ~)を開いてください。

すると次の様な画面が表示されるので、データファイルのボタンをクリックします。

次の様な画面が表示されます。既定に設定されているデータファイルが無い場合には、適当なデータファイルを選択して「既定に設定」して下さい。

既定に設定しようとしてもエラーとなる場合には、データファイル自体が壊れています。この場合には修復ツールを用いて、データファイルのエラーを修復します。修復するには「C:\Program Files\Microsoft Office\root\Office16」のフォルダにある、SCANPST.EXEを起動して、データファイルを選択します。

データファイルの大きさにもよりますが、修復には数時間~半日ほどかかります。急ぎ送受信だけでも可能にしたい場合、既存のデータは後日に修復してImportする物と割り切り、新規にデータファイルを作成して既定に設定する方が良いでしょう。

WSUSに追加したWin10でWindowsUpdateがエラー(0x80244019)になる

Windows 2012R2のWSUS環境でクライアントにWindows10を追加し、Windows10でWindowsUpdateを実行するとエラーコード:0x80244019が出て失敗する場合がある。

Windows10移行はUpdateFileの配信にesd形式のファイルを使うように変更されている。WSUSサーバーのIISで、MIME設定にesd形式の拡張子が登録されていないためにダウンロード出来ないのが原因。

IISマネージャーを開き、WSUSの管理にあるMIMEの種類から拡張子.esd、MIMEの種類application/octet-streamを追加する事で解決する。

WSUSに追加したWin10でWindowsUpdateがエラー(0x8024401C)になる

Windows 2012R2のWSUS環境でクライアントにWindows10を追加し、Windows10上でWindowsUpdateをしたところ、にエラーコード:0x8024401Cが出て失敗する場合がある。

サーバー側の状態をタスクマネージャなどで確認すると、Windows10でWindows Updateを実行した直後からCPU負荷が上がったままになっていることが分かる。この場合の原因はWSUSサーバー側の処理に時間がかかり、途中でIISのセッションが切れてしまうことによる。

またWindows10のUpdateファイルは拡張子.esdのファイルで提供されている。初期状態だとMIMEの設定にesdファイルが含まれていないために、Updateファイルをダウンロード出来ずにエラーとなる。

IISマネージャを起動してアプリケーションプールからWsusPoolを開き、CPUの制限間隔を5分から15分程度に変更する。また、全般のキューの長さも10000から25000程度に拡張する。リサイクルのプライベートメモリ制限を18342456から0にして制限を解除します。

原因不明のPCトラブルにあった場合の対処

コメントにトラブルの問合せとかくるようになったので、トラブル対処の一般的なことを述べておく。
まずは再インストールを検討しよう。それが駄目なら新しく買い足そう。

僕みたいに「趣味」でトラブルシューティングする場合でも、放置できるトラブルなら好きなだけ時間を掛けて調べる、放置できないなら再インストールなり予備機移行なりをした後に、調べるって事になる。再インストールは重要な選択肢なのだ。

1.まずは時間を決めて情報収集する

1時間とか、2時間とか時間を決めて、対処法がないか情報収集をします。
無闇に時間をかけて調べてはいけません。もしかしたらすぐに対処法が見つかって、若干の設定変更等で対処できるなら、10分ほどで解決するかもしれません。ですが何日かけても、対処法が見つからないかもしれません。
存在するか分からない情報を探すというのは、リスク(不確実性)の高い方法です。だから最初にどの程度の時間(損失)をかけて情報収集を試みるのか、しっかり考えておくことが大事です。

2.OSの再インストールを検討する

OSの再インストールは時間はかかりますが、リスク(不確実性)の少ない良い方法です。「ハードウェアの故障」「仕様上から出来ない事(バイ・デザイン)」「再現性のあるソフトウェアの不具合(バグ)」のいずれかでも無い限り解決します。

2.1.ハードウェアの故障有無を判断する

メーカー製パソコンだと自己診断機能を備えていることが多いです。付属のマニュアルなどを確認して、自己診断を実行して下さい。
自作パソコンだと自己診断機能という訳には行きません。イベントログの内容を精査したり、memtest86やCrystalDiskInfo等のフリーウェアを使ったり、あるいは目視や動作音から判断していくことになります。

2.2.データのバックアップ状態を確認する

あらためてバックアップする必要のあるデータが無いか検討します。普段からバックアップを取っていないとこういう時に困ります。昔は外付けのHDDにコピーしたり、DVDに焼いたりと作業が発生していたので面倒でしたが、今ならOneDriveやGoogleDriveと同期すると言う方法もあるので、こまめにバックアップ(複製)を取るようにしようね。
WEBブラウザのお気に入りとか、普段使用しているサービスのユーザーIDとパスワードとか、バックアップを忘れがちなので気をつけよう。

2.3.再インストールに必要な物を確認

後は付属マニュアルなどにそってひたすらインストールするだけなのだが、インストールメディアがないとか、PIDが分からないとかありがちである。気をつけよう。

3.検討した結果、今すぐの再インストールは無理だと思ったら

予備のパソコンを使おう。
もし予備のパソコンが使えないなら、新しいパソコンを買ってこよう。もちろん本気である。

トラブルの状況にもよるが、パソコンが起動しない状態でHDDからデータをバックアップするには別のパソコンが必要になる。情報収集しようにも、やはり別のパソコンがないと効率が悪い。再インストール作業には2日~3日かかることもあるが、この時間的損失を許容できないなら、その間は別のパソコンを使う以外にない。トラブルの発生しているパソコンの復旧作業は、手が空いたときにしよう。
借りるって手もよさそうに思うが、有料のレンタルは決して安くないし、機材の手配やデータ移行、環境設定やら何やらを考えると結局は2日~3日かかってしまう。量販店で買うなら、1時間後には手元にパソコンが届くだろうし、1日あればなんとかなる。

4.再インストールしても駄目なら・・・

「ハードウェアの故障」「仕様上から出来ない事(バイ・デザイン)」「再現性のあるソフトウェアの不具合(バグ)」のいずれかって事になる。ここまで来たなら、メーカーサポートを頼った方が良い。

AD環境でクライアントPCの名前解決に失敗する

Active Directory環境下でクライアントパソコンの名前解決を行うと実際とは異なるIPアドレス帰ってくる場合、DNSのキャッシュしている情報が不整合を起こしています。

その場合はADサーバー上において管理ツールの「DNSマネージャー」を起動して、前方参照ゾーンを開き、表示されるコンピューター名の一覧から当該クライアントパソコンの設定を削除します。

削除した分のデータはクライアントパソコンを再起動したときに、正しい内容で再作成されます。

Officeのタイトルバーに表示されるユーザー名をAD環境下で変更するには

Office 2013以降はタイトルバーの右上にユーザー名が表示されています。ここに表示されているユーザー名はOneDriveのユーザー名であったり、ActiveDirectory(以下AD)のユーザー名であったり環境によって異なります。ところがAD環境下の場合にはADサーバ側でユーザーの登録内容を変更しても、Officeのタイトルバーに表示されている氏名には反映されません。

AD以外の環境・・・例えばOneDriveのユーザー名ならばファイルメニューのアカウントを開き、サインアウトを実施します。その後にあらためてファイルメニューのアカウントを開き、サインインする事でOneDriveのユーザー名を反映することが出来ます。ですが、Active Directory環境下の場合には、ファイルメニューのアカウントからサインアウトを選択するとサインアウトできますが、もう一度ファイルメニューのアカウントからログインし直すことが出来ない為に、ログアウトしたままになってしまいます。

Active Directory環境下の場合にはレジストリを直接編集して名前を変更する必要があります。レジストリエディタを起動して「HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\Identity\Identities」を開きます。ここにADユーザアカウント名でフォルダが作成されていますので、「FriendlyName」および「Initials」を変更します。この後Officeを起動すると、新しい名前が反映されるようになります。

参考:https://technet.microsoft.com/en-us/library/jj683102.aspx#Bkmk_4_DeleteCreds

WSUSに接続しているクライアントPCが、Updateのダウンロードに失敗する場合

WSUSクライアントがWindowsUpdateのダウンロードに失敗する場合には、次の手順でクライアントのキャッシュを初期化すると正常に動作する場合がある。

参考:Windows Update クライアントの情報をクリアにする手順

WSUSを使っていると言うことは、ActiveDirectoryの環境も整っています。ここではクライアントにログインせずに、エンドユーザーに気がつかれないように遠隔操作のみで処理していきます。

次の様なコマンドを実行して、コントロールパネルの「コンピューターの管理」をエラーの発生している端末に繋ぎます。

C:\>runas /user:example.local\[管理者ユーザー] "mmc.exe C:\windows\system32\compmgmt.msc /computer=[コンピューター名]"

これで「コンピューターの管理」が開きますので、ツリーからサービスを選んで「Windows Update」と「Background Intelligent Transfer Service」を停止します。

次のコマンドを実行して、エラーの発生している端末のC:ドライブをマウントします。

C:\>net use A: \\[コンピューター名]\C$ /user:example.local\[管理者ユーザー] [パスワード]

以下のコマンドでSoftwareDistributionフォルダ、及びBITSのジョブを削除します。

ren A:\Windows\SoftwareDistribution SoftwareDistribution.old
del A:\ProgramData\Microsoft\Network\Downloader\qmgr0.dat
del A:\ProgramData\Microsoft\Network\Downloader\qmgr1.dat

「コンピューターの管理」に戻って「Windows Update」と「Background Intelligent Transfer Service」を起動します。

これで先ほど削除した、あるいはリネームしたファイルやフォルダが再び作成されて居ることを確認します。

最後にマウントしたドライブを解放しておきます。

NET USE A: /DELETE

以上で、人知れずWindows Updateのキャッシュ削除完了。2日ほど待ってWSUS上からエラーがなくなっていれば成功です。