Technical Notes
テクニカルノーツ
Windows
-
2017.11.19
Outlook 2016 クイック実行版でアカウント設定が失敗する件
Outlook 2016でアカウント設定が失敗する お客様から新しいメールアカウントのリクエストをいただいたので、Linuxサーバにアカウントを追加し、Outlook2016 でメール送受信が正常に行えることを確認して客先へ出向いた。 サーバは自社で構築した Linuxサーバで、POP: Dovecot / SMTP: Postfix のいたって普通のサーバだ。SMTP Auth の設定はしてあるが、SSL経由の暗号化はしていない。 客先のクライアントPCで Outlook 2016 を立ち上げ新規アカウントの設定を始めたが、事前に確認していた手順と変わっている。事前確認した環境では「アカウントの追加」ダイアログが表示されるが、お客様環境では「Outlookへようこそ」というウィンドウが表示される。 勝手が違うままに設定を進めるが、送信サーバと受信サーバおよびアカウントとパスワード以外の設定がなく、これまで「詳細設定」でできた項目が一切触われない。何が触われなかろうと最終的にメール設定が完了してくれれば文句はない。しかし、一本道を進んだ結果は「問題が発生しました」のエラーだ。「問題が発生し、Outlook はアカウントを設定することができませんでした。もう一度やり直してください。問題が解決しない場合は、メール管理者にお問い合わせください。」などどいう何の役に立たないメッセージが余計に腹立たしい。 原因はクイック実行版のバグ 調べてみたところ、この簡略化されたインターフェイスはクイック実行版と呼ばれ、初回起動時の設定を簡略化するためのものらしいのだが、このクイック実行版で SMTP認証が必要ない POPサーバや IMAPサーバに接続した際にエラーが起こることは Microsoftでも確認できているらしい。 クイック実行版のOutlook 2016でPOPやIMAPのアカウントを設定すると「問題が発生しました」エラーで失敗する エラーの原因として、 従来のアカウント設定画面では以下の [送信サーバー (SMTP) は認証が必要] が既定でオフであり、SMTP 認証を要求されないアカウントを作成することができました。 しかし、新しいアカウント設定画面ではこの設定がなく、オンに指定されていてオフに変更できないために発生します。 などと書かれているが、SMTP Auth が必要な設定にしてあり、今回のケースは当たらない。おそらく単なるバグだろう。慣れない人には面倒なメールアカウント設定を簡略化するのはかまわないが、弊社のようなIT周辺で右往左往している会社にとってブラックボックス化は好ましくない。 対処方法はコントロールパネルまたはレジストリの編集 対処方法がなくはなく、コントロールパネルの [Mail (Microsoft Outlook 2016)] アイコンからアカウントの追加を行うことで旧来の設定画面が表示される。まったくの新規の場合はプロファイルの作成から始める必要があるので注意してほしい。 もしくはレジストリを編集する方法があるが(下記参照)、お客様先のレジストリを編集するのもためらわれたので素直にコントロールパネルから設定をして事なきを得た。 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\setup 値の名前: DisableOffice365SimplifiedAccountCreation 値の種類: REG_DWORD 値のデータ: 1 メールサーバ構築を考え直すきっかけかもしれない そんなこんなで30分ほど余分な時間を喰ってしまったが、「マイクロソフトは余計なことするな!」と文句をつけるのは簡単だ。ただ、これからもエンドユーザ周辺のブラックボックス化はどんどん進むだろうし、メールサーバがSSLやTLSに対応していればエラーも起こらなかったのかもしれない。 メールをより安全に使えるサーバが必要な時代なのだ。うちの構築方法も考え直す機会をもらったと思っている。
-
2016.3.11
Windows10からWindows7に戻したら日本語入力ができなくなった場合の対処法
Windows10の半強制アップグレードが行われているらしい 2016年3月11日現在、Windows10への意図しないアップグレードが行われてしまったという報告が相次いでいる。いずれの場合も自ら望んでアップデートしたわけではないのだが、キャンセルの方法がわからずに知らず知らずにアップグレードを選択してしまったという事情らしい(詳細はWindows10への半強制アップグレードが再び猛威を奮っている模様?を参照)。 アップグレード後、1ヶ月以内はWindows7に戻すことが可能 望まぬアップグレードにより Windows10 になってしまった場合でも救済措置はある。アップグレード後、元の OS に戻す機能が用意されている。元のOSに戻す方法を書くことが本稿の主旨ではないので、必要な場合は「Windows10にアップグレードした後、元のOSに戻す方法」を参照されたい。 日本語入力ができなくなる 問題は元に戻した後に発生する。一件、普通に Windows7 が起動したかに見えて、いざ日本語入力をしようとしても IME が立ち上がってこない。ESCを押してもALT+ESCを押しても、一切の日本語入力ができない。キーボードのプロパティを操作してもまったくの無駄である。 Vista以降の Windows では、サインイン後に MsCtfMonitor というタスクが実行されて IME を呼び出すことができるようになるのだが、一旦 Windows10にアップグレードしたことによって Windows7 のタスクが正常に実行されなくなってしまったことが原因である。確認のためにタスクスケジューラを開こうものなら「タスク イメージは破損しているか、または変更されています。(HRESULT からの例外:0x80041321)」というエラーが表示され、OKボタンを押しても繰り返しエラーが表示されて、少なくとも80回を超えるクリックを強いられる(万が一クリック地獄に堕ちてしまった場合はCtrl+Shift+ESCでタスクマネージャを開いて、タスクスケジューラを強制終了させよう)。 タスクスケジューラを立ち上げずにエラーを確認するためにはコマンドラインから schtasks /query ENTER を実行する方法もあるが、後述するプログラムで同様のことができるので必ずしも実行する必要はない。 IMEを起動させるだけなら ctfmon.exe をスタートアップに入れることで復旧可能だが、タスクスケジューラに大量のエラーを残したままであり、根本的な解決とはならない。システム管理者としてはエラーの影響が測定できない以上、捨てておくべきではない。 大量のタスクの復旧 もっとも優れた復旧方法はWindowsバックアップから復元することだが、大半のエンドユーザは毎日バックアップしていることなどない。そうなるとひとつひとつ破損したタスクを復旧させていかなければならないのだが、壊れたタスクを復旧させる方法はなかなかむずかしい。レジストリとデータファイルをひとつひとつ操作する必要があるため、現実的な方法ではないのだ。しかし、ありがたいことにこの復旧方法をプログラム化してくれた人がいる。Repair Tasks がそれだ。 Repair Tasks を実行せよ 日本語入力はできなくともブラウザは動く。まずは Repair Tasks のダウンロードページ(2018.6.26補記:CodePlexのサポート終了に伴い、サイトはGitHubに移行した)へ行って、RepairTasks.zip をダウンロードしよう。23KBほどしかない小さなプログラムだから、あっという間に落とせるはずだ。 適当な場所にダウンロードしたZIPを解凍し、RepairTasks.exe を起動すると下記のウィンドウが表示される。 タスクをバックアップし、エラーをスキャンせよ バックアップはいつも大事だ。Repar Tasks を実行したら、すぐにウィンドウ右下の Backup Tasks を実行しよう。保存する場所はデスクトップでもドキュメントフォルダでもどこでもオーケーだ。 次にウィンドウ左上の Scan ボタンを押すと、大量のエラーが流れていくはずだ(この時の結果をテキストファイルで残しておきたいときには Save Results ボタンを押すこと)。 破損したタスクを修復する エラーを検知すると Scan ボタン右にある Repair ボタンが活性化される。迷わず Repair ボタンをクリックしてみよう。タスクの修復が始まると思う。ただし、すべてのタスクが修復できるとは限らない。おそらく 31個ほどのエラーが残る。これは Windows10で実行されるタスクが残っているために発生するエラーなので、致命的なエラーではない。 Windows7 を再起動してみよう とりあえずはこれで必要な修復は終わったはずなので、Windows7 を再起動させてみよう。ExcelなりWordなりメモ帳なりを立ち上げて、日本語入力ができるようになっていれば復旧は成功だ。 あとは暇なときにタスクマネージャを開き、根気よくエラー画面のOKボタンを押してから、タスクのフォルダをひとつひとつ開いてエラーが出るタスクを削除していけばいい。 その他の障害が併発する場合もある 以上の手順だけで復旧がついた場合は比較的幸せだ。中には Windows10 自体が正常に起動しなかったり、Windows7 のデスクトップアイコンが表示されなかったりする場合がある。 Windows10 自体が正常に起動しない場合は Shift+再起動 Windows10 自体が正常に起動しない場合には、なんとか Ctrl+Shift+ESC でタスクマネージャを表示させて、再起動アイコンを表示させよう。そして Shiftキーを押しながら再起動アイコンをクリックしてみよう。これは Windows 8 以降のセーフモードの起動方法だ。 この方法で再起動すると起動オプションの選択ができるようになるので「トラブルシューティング」-「詳細オプション」から Windows 7 への復元の道が開くはずだ。 Windows 7 のデスクトップアイコンが表示されなくなった場合 実際に起こったことなのだが、Windows 7 のデスクトップアイコンが表示されなくなったケースもある。この場合の対処は極めて簡単で、デスクトップ上の任意の位置(どこでもいい)で右クリックして、「表示」メニューから「デスクトップ アイコンの表示」をチェックするだけでいい。 今後も半強制アップグレードは続く この半強制アップグレードによって多くのエンドユーザ・システム管理者・システム担当者の貴重な時間が浪費されたことだろうが、おそらくこれで終わりではないだろう。 また復旧方法が見つからず、泣きながらひとつひとつエラーを復旧している担当者もいるかもしれない。私自身、この復旧方法を見つけ出すために数時間を費やした。 同様の現象で悩んでいる日本の Windowsユーザの一助となればと考え、手順をまとめてみた。あらかじめ準備をしていたわけではないのでスクリーンショットは用意できなかったが、明日も本件のサポートでエンドユーザ企業に訪問するので、できればもう少し整備した情報にしたい。
-
2014.1.25
Windows7機のマザーボードを換装してみた結果、Linuxでレジストリを書き換えてみた
もしマザーボードが壊れたら Windows7もリリースから早くも4年と3ヶ月が過ぎたが(Windows7は2009年10月22日発売)、Windows8.1がリリースされた現在でもいまだ現役で使用され続けている。OSのリプレースがユーザに直接的なメリットを感じさせないことやユーザ・インターフェイスの大幅な変更がユーザの不評を買ったこともあってWindows8系のOSが商業的に成功を見ていないため、しばらくの間はビジネス市場でWindows7が使い続けられるであろうことは想像に難くないが、Windows7がその役目を終えるまで何の問題なく使い続けられる幸運を誰もが持ち合わせているわけではない。ハードウェアには寿命があるからだ。 もし寿命の尽きたハードウェアがDVDドライブやメモリや電源であれば話は簡単で、パーツを交換すればすむ話だ。不幸にしてハードディスクがまったく動かなったのなら、Windowsのクリーン・インストールを余儀なくされるだろうし(不幸にしてバックアップを取る習慣のない人にはとても悲しいできごとだけれども)、選択肢が限られている分あきらめもつく。だが、問題はマザーボードに障害が起きた場合だ。 Windowsが起動しない ハードディスクには異常がないのだから、他のパーツ同様に交換すればすむんじゃないの?と考えた人(私のことだが)は今のOSを知らない。Windows XPの時代はいざ知らず、Vista以降はマザーボードを換装した場合、Windowsが正常に起動しない。運がよければスタートアップ修復のダイアログを目にすることができようが、結局のところ修復は失敗に終わり、再起動から再びスタートアップ修復を目にする羽目になる。運が悪ければブルースクリーンが表示され、まったく起動しない。 これは最近の Windows は初期インストール後に環境に合わせて最適化され必要なドライバしか読み込まないため、引っ越し先のハードウェアに適応していないことが原因だ。したがって、レジストリの書き換えによって生き残ったハードディスクにインストールされたWindowsを初期状態に戻してやる必要があるのだ。 ただし、この段階で起動しないことが判明したからには、既にマザーボードは交換済みのはずだ。賢明にしてマザーボード換装前にこのエントリと遭遇した人は、この先を読んでスタートアップ修復(またはブルースクリーン)を回避して欲しい。交換前のマザーボードがまだ生きていて、なおかつ手を動かすことに抵抗のない人は、マザーボードを元に戻そう。 そんな面倒なことはごめんだ そんな面倒なことは御免蒙(ごめんこうむる)!という人(私のことだが)にも救いの道はある。世の中にはLinuxというOSもあって、Linuxからレジストリを書き換えるためのchntpwというコマンドを開発した偉い人も存在する。Petter Nordahl-Hagen さんというノルウェーの人だが、なんと読むかはわからない。まあ、ペッターさんでいいだろう。読み方はわからなくても感謝の気持ちは大事だ。ペッターさんに感謝しながら使おう。 chntpwが使えればLinuxのディストリビューション(ディストリビューションが何かわからない人はLinuxディストリビューションを読むこと。こんなにたくさんの種類があるので一言では説明できないのだ。)は何でもかまわないのだが、レジストリを書き換えるだけのためにLinuxを利用しようという人には以下のISOイメージをダウンロードして使うことをおすすめする。 Kaspersky Rescue Disk 10 trinity rescue kit Kaspersky Rescue Disk 10 はアンチウイルスなどのセキュリティ製品で有名なカスペルスキーが配布しているツールで、主な目的はウイルスやマルウェアに感染したコンピュータを修復することだが、修復の過程でレジストリの編集が必要となるケースもあってか chntpwがGUIで使えるようになっている。使いやすい分、こちらの方がおすすめだ。 trinity rescue kit は Windowsマシンの復旧・修復用に作られた 1CD Linux(CD1枚で起動するLinuxのこと。Live Linux ともいう。)で、主にコマンドラインから利用しなければならないし、ハードディスクのマウントの知識など Linux のリテラシが必要になるので比較的ハードルが高い。ISOイメージをCDに焼けない人のために Windows上で自動解凍するとCDまで焼いてくれるバージョンも用意されていたりするのだが、こんなものを使おうという人がISOイメージを焼けないなんてことがあるのかという疑問はあるものの、いつでも感謝の気持ちを忘れてはいけない。Kaspersky Rescue Disk 10 が使えない場合にはありがたく使わせていただこう。 ちなみにどちらも英語版なので、最低限の英語力は必要だ。中学・高校と6年間も英語教育を受けさせてくれた両親・保護者にも感謝を忘れないこと。 Kaspersky Rescue Disk 10 を起動してみた さっそく Kaspersky Rescue Disk 10 の CD を作成して起動してみた。グレーン基調のスマートな画面が表示され、ハードディスクも自動的にマウントされる。スクリーンショットを見れば分かるように、起動直後にはウイルススキャンのウィンドウが表示され、このディスクがセキュリティ目的のためにつくられたことがわかる。画面左側にあるアイコンには、マウントされたハードディスクを表すフォルダアイコンの他、ファイルマネージャ、レジストリ・エディタの他、ブラウザまで用意されている。このアイコンからレジストリ・エディタ(Registry Editor)をダブルクリックする。 レジストリを書き換える レジストリ・エディタからは HKEY_LOCAL_MACHINE\System 配下に複数あるControlSet(ControlSet001 とかControlSet002など。ControlSet001とかControlSet003 の組み合わせの場合もあるし、2個以上ある場合も考えられる。)以下のキーを修正する。ControlSetはWindowsが起動したときに記録されるシステム・レジストリのセットであり、システムの変更状態によっていくつかのバックアップが取られる。少なくとも前回正常起動時のバックアップと現在の ControlSet の2つが存在しているはずだ。Windows が起動したときに、どの ControlSet が使われるかはHKEY_LOCAL_MACHINE\SYSTEM\Select以下をみればわかるのだが、修正漏れがないようにすべてのControlSet に対して修正を施しておくほうが無難だろう。 修正対象のキー 修正は最低限(ControlSet001の場合)、 HKEY_LOCAL_MACHINE\System\ControlSet001\Services\Msahci の Startエントリの値を 0 に書き換えてやれば Windowsは起動する。ただし前述の通り、不要なドライバを読み込まないようになっているのは最適化のためなので、逆に不要なドライバを読み込むことによって起動に時間がかかるようになる可能性もある。どれほどの影響があるかは不明だが、以下のキーについても同様に Startエントリを 0 に書き換えておいたほうがいいようだ。 Aliide.sys Amdide.sys Atapi.sys Ataport.sys Cmdide.sys Intelide.sys Pciide.sys Pciidex.sys Viaide.sys まだマザーボードを交換していない、もしくは元のマザーボードに戻した人は、Windows を起動して Regedit で以上の作業を完了させればいい。 戦いは終わっていない これでようやく Windows を起動できるようになったはずだが、これで終わりというわけではない。マザーボードを変更したことで、チップセットをはじめ、LAN・VIDEO・USBその他諸々のドライバも新しいものが必要になっている。交換したマザーボードに添付されているCDから適宜必要なドライバをインストールしよう。 おっと、これで終わったと思ってはいけない。マザーボードを交換したことによって Windows7 のアクティベーションが無効になっているからだ。システムのプロパティを表示して、再アクティベーションを行う(詳細はこのコンピューターの Windows をライセンス認証するを参照のこと)。プロダクトキーは今まで使っていたものと同じキーでアクティベーションしてくれるが、もちろん保証の限りではない。ライセンスの問題は各自で解決すること。 同様にMS-Officeのアクティベーションも無効になっている可能性が高い。こちらについては Excel や Word を起動すると自動的にアクティベーションを要求されるので、そのままインターネット経由でアクティベーションを実行しよう。私の場合は特に問題もなくアクティベーションが完了した。 次回予告 勘の良い人はお気づきになったかもしれないが、本来、chntpw とはその名の通り Change NT Password、つまり Windows のパスワードを変更するためのコマンドだ。次回は trinity rescue kit を使って、パスワードがわからなくなったマシンを復旧する方法について書いてみようと思う。