複数のOfficeの併用について~XPからようやくWindows 7 x64へ(4)の追記
(この項は、「OfficeにUAC現る~XPからようやくWindows 7 x64へ(4)」の追記として書かれたものです。)
Microsoft Office XP personalとMicrosoft Office Home and Business 2010(32bit版)とをWindows 7 x64にインストールすると、xlsx・docxファイルのみならずxls・docファイルをダブルクリックした場合も、それぞれExcel 2010、Word 2010しか起動しないのである。通常の拡張子の関連付けは機能しない。一体どうなっているのか。いろいろと調べてみた。
一、
複数のバージョンのMicrosoft Officeを併用することは、そもそも推奨されておらず、敢えて共存させる場合には、気を付けなければならないことがあるという。
◎ 必ず古いバージョンの Office を先にインストールし、順次、新しいバージョンをインストールしていかなければならない、というのである。
「各バージョンの Office スイートおよび Office プログラムのレジストリ キー、共有プログラム、ファイル名拡張子、およびその他の設定を正しく管理するために、この順序でインストールする必要が」ある、というのである(「Office 2010 スイートおよび Office 2010 プログラムを、他のバージョンの Office を実行しているコンピューターで使用する方法について」文書番号:2121447、「1 台のコンピュータで複数のバージョンの Office を実行する方法」文書番号:290576)。
◎ Officeのファイルから各アプリケーションを起動する場合は、通常のファイルの関連付けとは異なる基準で、どのバージョンのOfficeアプリケーションが起動するかが決定されている、というのである。
「複数のバージョンの Office がインストールされている場合の Office オートメーションについて」(文書番号:292491)によると概ね以下のように説明されている。
Excel及びPowerPoint では、Office セットアップ中にレジストリ キーが変更され、これらのアプリケーションのいずれかを自動化する際に読み込まれるバージョンは、最後にインストールされたバージョンだという。これらは同一のクラス識別子 (CLSID)を共有しているため、これらのプログラム識別子 (PROGID)を使用して読み込まれるバージョンは、どのバージョンが最後にインストールされたかということで決まるからだという。
これに対し、Wordは他のOfficeアプリケーションとは異なり、Officeセットアップ中だけでなく Word が起動されるたびにレジストリ キーが変更され、Word を自動化する際に読み込まれるバージョンは、最後に起動されたバージョンまたは最後にインストールされたバージョンだというのである。
Officeのオートメーション(自動化)の具体的な内容までは、よく知らないが(詳細は「Office アプリケーションの自動化」を御覧ください)、Officeファイルに関して、上掲のサイト(文書番号:2121447)には、こうある。
「エクスプローラーで Office ファイルをダブルクリックしてファイルを開く場合、以下のルールが適用されます。
注: Windows の [最近使ったファイル] で Office ファイルをダブルクリックした場合にも、このルールが
適用されます。
●ファイルを作成したバージョンのプログラムがコンピューターで実行されている場合、ファイルはそのバージョン
のプログラムで開かれます。
●Office XP では、ファイルを作成したバージョンのプログラムがコンピューターで実行されていない場合、
そのファイルは最後にインストールされたバージョンのプログラムで開かれます。
●Microsoft Access および Microsoft Word では、ファイルを作成したバージョンのプログラムがコン
ピューターで実行されていない場合、そのファイルは最後に起動したバージョンのプログラムで開かれます。
●特定のバージョンの Office に含まれるプログラムにファイルを関連付けるには、Office セットアップ
プログラムを実行し、[修復] をクリックします。これを実行すると、そのバージョンの Office に対するファイル
の関連付けが登録されます。」
但し、Word及びAccessは、「修復」を使って関連付けを行うことはできないという。
また、Officeの更新プログラムをインストールした場合にも関連付けが登録されるため、それを元に戻すには改めて「修復」する必要があるという。
さらに、複数のバージョンのWordがコンピューターにインストールされている場合、Wordを起動するとWindows インストーラーが実行され、「インストールの準備中」というメッセージが表示されることがあるとも記されている。
なお、コマンド プロンプトで「/regserver」スイッチを指定して、特定のバージョンの Excelを強制的に登録する方法があるが、Microsoftは通常の運用手段としては推奨していない。
試みに、上記文書番号:292491又は下記Microsoft Answersのページを参考にして、「"C:\Program Files (x86)\Microsoft Office\Office10\excel.exe" /regserver」と入力して実行してみた。インストーラが起動してExcel 2002の登録が行われたように見えたが、xlsファイルからは、相変わらずExcel 2010が起動する。
どうも、Win 7 64bitの環境では、この登録はうまく機能しないようである。
○Microsoft Answers参照ページ;
「Office2003と2010をインストールしてあり、2003で作成したものは2003で起動したい。ファイル名をダブルクリックすると常に2010が起動してしまう」
「[XP] ファイルを直接開こうとすると、必ず、2007のバージョンで開いてしまう」
二、
Word 2002自体を起動させてみると、「インストールの準備中」とのメッセージの後に、「この機能はエラーのため正しく動作していません。セットアッププログラムを使ってセットアップし直してください」というメッセージが出現する。
前掲の文書には、エラー・メッセージが表示されるとまでは記されていない。
そこで、改めて両Officeをアンインストールし、改めてインストールし直すことにした。
今度は指示通り、古いOffice XPを先にインストールし、続けてSP3、Office XP用更新プログラムをインストールした。
その後に、Office 2010をインストールし、同様にSP1その他の更新プログラムをインストール。
しかしながら、このWord 2002の起動時のエラーは改善しない。
数回、アンインストール・再インストールを繰り返してみたが、結果は同じである。
三、
Microsoftに問い合わせてみた。
Win 7 x64環境に両Officeをインストールした場合、同様のエラー・メッセージが表示されることが確認された、との回答があった。
「これは、Word 2002 を起動する際に、Word 2010 のインストール情報の一部を読み込む
などして、その情報を Word 2002 がエラーとして認識しているため発生している可能性が
ございます。
そのため、弊社動作環境では Office XP を、インストール CD を使用して修復を行うことで
Word 2002 の起動時のエラー メッセージが表示されなくなることが確認できました。」
ということで、以下の手順が示されている。
1. コンピューターを起動し、Office XP の CD-ROM をDVD ドライブに挿入します。
2. [メンテナンス モード オプション] 画面が表示されましたら [再インストール/修復] に
チェックをいれ、[次へ] をクリックします。
3. [Office のインストールで発生したエラーを検出して修復します] にチェックを入れ、
[完了] をクリックします。
4. 修復完了後、DVD ドライブからOffice XP のCD-ROM を取出した後、コンピューターを
再起動し、動作を確認します。
これによって、確かにエラー・メッセージは表示されなくなり、xls・docファイルからは、それぞれExcel 2002、Word 2002が起動するようになる。しかし、ひとたびWord 2010を起動すると、改めてインストーラが起動し、再び元の状態に戻ってしまう。
この現象に関して、改めてMicrosoftに確認したところ、「基本的には製品を併用されているための動作上の制限である」とのこと。これは、上述の「/regserver」のコマンド ラインが機能しないことも含め、元来、Microsoftが推奨していない複数のバージョンのOfficeの併用に伴う競合によるものであるから、致し方ないと言わざるをえない。その回答にも、「Office 製品を併用するために発生している現象の為、根本的な改善策はございません」との見解が示されている。
四、
そこで、対処法として、前記の文書(2121447)にあるWordの自動登録を無効にする方法を執ることにする。
① regeditを起動し、
HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Options
というレジストリ サブキーを見つける。
② 記載されているサブキーが選択されている状態で、
[編集] メニューの [新規] をポイントして、[DWORD 値 32bit] をクリックする。
③ 「NoReReg」と入力し、Enter キーを押す。
④ [NoReReg] を右クリックし、[修正] をクリック。
⑤ [値のデータ] ボックスに「1」と入力し、[OK] をクリックする。
これで、Word 2002の起動時にインストーラは起動しなくなる。もちろん、これとて推奨された方法ではないことに留意する必要がある。
また、ファイルからの起動については、前記Microsoft Answersの回答の中に、右クリックの「送る」にファイルから起動しないExcelやWordを追加して運用している例が挙がっていたので、私もそれを採用させてもらった。
Win7 x64の場合、C:\User(ユーザー)\[ユーザー名]\AppData\Roaming\Microsoft\Windows\SendToにExcel 2002及びWord 2002のショートカットを追加しておく。
Microsoft社が「根本的な改善策」はないと言明する以上、これらの姑息な方法で凌ぐほかないようである。
Microsoft Office XP personalとMicrosoft Office Home and Business 2010(32bit版)とをWindows 7 x64にインストールすると、xlsx・docxファイルのみならずxls・docファイルをダブルクリックした場合も、それぞれExcel 2010、Word 2010しか起動しないのである。通常の拡張子の関連付けは機能しない。一体どうなっているのか。いろいろと調べてみた。
一、
複数のバージョンのMicrosoft Officeを併用することは、そもそも推奨されておらず、敢えて共存させる場合には、気を付けなければならないことがあるという。
◎ 必ず古いバージョンの Office を先にインストールし、順次、新しいバージョンをインストールしていかなければならない、というのである。
「各バージョンの Office スイートおよび Office プログラムのレジストリ キー、共有プログラム、ファイル名拡張子、およびその他の設定を正しく管理するために、この順序でインストールする必要が」ある、というのである(「Office 2010 スイートおよび Office 2010 プログラムを、他のバージョンの Office を実行しているコンピューターで使用する方法について」文書番号:2121447、「1 台のコンピュータで複数のバージョンの Office を実行する方法」文書番号:290576)。
◎ Officeのファイルから各アプリケーションを起動する場合は、通常のファイルの関連付けとは異なる基準で、どのバージョンのOfficeアプリケーションが起動するかが決定されている、というのである。
「複数のバージョンの Office がインストールされている場合の Office オートメーションについて」(文書番号:292491)によると概ね以下のように説明されている。
Excel及びPowerPoint では、Office セットアップ中にレジストリ キーが変更され、これらのアプリケーションのいずれかを自動化する際に読み込まれるバージョンは、最後にインストールされたバージョンだという。これらは同一のクラス識別子 (CLSID)を共有しているため、これらのプログラム識別子 (PROGID)を使用して読み込まれるバージョンは、どのバージョンが最後にインストールされたかということで決まるからだという。
これに対し、Wordは他のOfficeアプリケーションとは異なり、Officeセットアップ中だけでなく Word が起動されるたびにレジストリ キーが変更され、Word を自動化する際に読み込まれるバージョンは、最後に起動されたバージョンまたは最後にインストールされたバージョンだというのである。
Officeのオートメーション(自動化)の具体的な内容までは、よく知らないが(詳細は「Office アプリケーションの自動化」を御覧ください)、Officeファイルに関して、上掲のサイト(文書番号:2121447)には、こうある。
「エクスプローラーで Office ファイルをダブルクリックしてファイルを開く場合、以下のルールが適用されます。
注: Windows の [最近使ったファイル] で Office ファイルをダブルクリックした場合にも、このルールが
適用されます。
●ファイルを作成したバージョンのプログラムがコンピューターで実行されている場合、ファイルはそのバージョン
のプログラムで開かれます。
●Office XP では、ファイルを作成したバージョンのプログラムがコンピューターで実行されていない場合、
そのファイルは最後にインストールされたバージョンのプログラムで開かれます。
●Microsoft Access および Microsoft Word では、ファイルを作成したバージョンのプログラムがコン
ピューターで実行されていない場合、そのファイルは最後に起動したバージョンのプログラムで開かれます。
●特定のバージョンの Office に含まれるプログラムにファイルを関連付けるには、Office セットアップ
プログラムを実行し、[修復] をクリックします。これを実行すると、そのバージョンの Office に対するファイル
の関連付けが登録されます。」
但し、Word及びAccessは、「修復」を使って関連付けを行うことはできないという。
また、Officeの更新プログラムをインストールした場合にも関連付けが登録されるため、それを元に戻すには改めて「修復」する必要があるという。
さらに、複数のバージョンのWordがコンピューターにインストールされている場合、Wordを起動するとWindows インストーラーが実行され、「インストールの準備中」というメッセージが表示されることがあるとも記されている。
なお、コマンド プロンプトで「/regserver」スイッチを指定して、特定のバージョンの Excelを強制的に登録する方法があるが、Microsoftは通常の運用手段としては推奨していない。
試みに、上記文書番号:292491又は下記Microsoft Answersのページを参考にして、「"C:\Program Files (x86)\Microsoft Office\Office10\excel.exe" /regserver」と入力して実行してみた。インストーラが起動してExcel 2002の登録が行われたように見えたが、xlsファイルからは、相変わらずExcel 2010が起動する。
どうも、Win 7 64bitの環境では、この登録はうまく機能しないようである。
○Microsoft Answers参照ページ;
「Office2003と2010をインストールしてあり、2003で作成したものは2003で起動したい。ファイル名をダブルクリックすると常に2010が起動してしまう」
「[XP] ファイルを直接開こうとすると、必ず、2007のバージョンで開いてしまう」
二、
Word 2002自体を起動させてみると、「インストールの準備中」とのメッセージの後に、「この機能はエラーのため正しく動作していません。セットアッププログラムを使ってセットアップし直してください」というメッセージが出現する。
前掲の文書には、エラー・メッセージが表示されるとまでは記されていない。
そこで、改めて両Officeをアンインストールし、改めてインストールし直すことにした。
今度は指示通り、古いOffice XPを先にインストールし、続けてSP3、Office XP用更新プログラムをインストールした。
その後に、Office 2010をインストールし、同様にSP1その他の更新プログラムをインストール。
しかしながら、このWord 2002の起動時のエラーは改善しない。
数回、アンインストール・再インストールを繰り返してみたが、結果は同じである。
三、
Microsoftに問い合わせてみた。
Win 7 x64環境に両Officeをインストールした場合、同様のエラー・メッセージが表示されることが確認された、との回答があった。
「これは、Word 2002 を起動する際に、Word 2010 のインストール情報の一部を読み込む
などして、その情報を Word 2002 がエラーとして認識しているため発生している可能性が
ございます。
そのため、弊社動作環境では Office XP を、インストール CD を使用して修復を行うことで
Word 2002 の起動時のエラー メッセージが表示されなくなることが確認できました。」
ということで、以下の手順が示されている。
1. コンピューターを起動し、Office XP の CD-ROM をDVD ドライブに挿入します。
2. [メンテナンス モード オプション] 画面が表示されましたら [再インストール/修復] に
チェックをいれ、[次へ] をクリックします。
3. [Office のインストールで発生したエラーを検出して修復します] にチェックを入れ、
[完了] をクリックします。
4. 修復完了後、DVD ドライブからOffice XP のCD-ROM を取出した後、コンピューターを
再起動し、動作を確認します。
これによって、確かにエラー・メッセージは表示されなくなり、xls・docファイルからは、それぞれExcel 2002、Word 2002が起動するようになる。しかし、ひとたびWord 2010を起動すると、改めてインストーラが起動し、再び元の状態に戻ってしまう。
この現象に関して、改めてMicrosoftに確認したところ、「基本的には製品を併用されているための動作上の制限である」とのこと。これは、上述の「/regserver」のコマンド ラインが機能しないことも含め、元来、Microsoftが推奨していない複数のバージョンのOfficeの併用に伴う競合によるものであるから、致し方ないと言わざるをえない。その回答にも、「Office 製品を併用するために発生している現象の為、根本的な改善策はございません」との見解が示されている。
四、
そこで、対処法として、前記の文書(2121447)にあるWordの自動登録を無効にする方法を執ることにする。
① regeditを起動し、
HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Options
というレジストリ サブキーを見つける。
② 記載されているサブキーが選択されている状態で、
[編集] メニューの [新規] をポイントして、[DWORD 値 32bit] をクリックする。
③ 「NoReReg」と入力し、Enter キーを押す。
④ [NoReReg] を右クリックし、[修正] をクリック。
⑤ [値のデータ] ボックスに「1」と入力し、[OK] をクリックする。
これで、Word 2002の起動時にインストーラは起動しなくなる。もちろん、これとて推奨された方法ではないことに留意する必要がある。
また、ファイルからの起動については、前記Microsoft Answersの回答の中に、右クリックの「送る」にファイルから起動しないExcelやWordを追加して運用している例が挙がっていたので、私もそれを採用させてもらった。
Win7 x64の場合、C:\User(ユーザー)\[ユーザー名]\AppData\Roaming\Microsoft\Windows\SendToにExcel 2002及びWord 2002のショートカットを追加しておく。
Microsoft社が「根本的な改善策」はないと言明する以上、これらの姑息な方法で凌ぐほかないようである。
ネットワークの切断に悩まされて~XPからようやくWindows 7 x64へ(6)
一、
Windows 7を使い始めて以来、ずっと悩まされ続けてきた問題が、ネットワーク接続の頻々たる切断である。しかも、一旦切断されると、容易に復旧しないのである。
XP機のみでネットワークを組んでいたときは、これほど頻繁に接続が切れることはなかった。そこへWin 7機を参加させてから、ルータに繋がらなくなるという現象がほぼ2日おきに発生するのである。
ネットワークを使用していないにもかかわらず、突然、LAN接続の送受信を示すルータのモニターランプが高速で点滅し始めるのである。そうなると、どのPCもルータに接続できなくなるのである。具体的には、ルータのDHCP機能が働くなり、いずれのPCも適切なIPアドレスが取得できず、「169.254.」で始まるリンク・ローカル・アドレスがOSによって割り当てられることになり、インターネットに接続できなくなるのである。
ルータの電源のON・OFFを何度か繰り返し、それでも復旧しないしないときは、LANケーブルを抜き、あるいはハブの電源を切って、ルータの電源を入れるなど、種々の手を尽くしてようやく接続が回復するのである。
二、
ウェブを調べると、これと似た現象に多くの人が悩まされていることが分かる。しかし、なかなか有効な解決策に出会えず、結局、ルータの買い替えを余儀なくされる人が少なくないようである。
確かに、当方のルータは、ISDNの頃から使っている古いものであるが、未だに光が届いていない現時点では、ルータを交換するのは、ためらわれる。何とか、ルータを買い替えずに、解決したいものである。
ウェブを巡ってみると、いろいろと方策が挙がっているので、試してみる。
① ルータのファームウェアを更新する。
残念ながら、ルータがあまりにも古すぎてファームウェアの更新はない。
② ネットワークアダプタの「詳細設定」にある「Flow Control」を「Disabled」から「Rx & Tx enabled」にする。
ディバイスマネージャから「詳細設定」を見てみると、「フローコントロール」は「有効」となっている。
③ IPv6を無効にする。
ルータがIPv6に対応しきれていないこともあるという。
コントロール パネル→ 「ネットワークと共有センター」→「ローカルエリア接続」→「プロパティ」の
プロトコル TCP/IPv6のチェックを外す。
その「プロパティ」の「構成」から「詳細設定」を開き、
TCPチェックサムオフロード(IPv6)
UDPチェックサムオフロード(IPv6)
一括送信オフロードv2(IPv6)
これら全ての項目を「無効」にしてみる。
さらに、ルータ側の「IPv6ブリッジ機能」も「OFF」にしてみる。
しかし、ネットワーク接続は切れてしまう。
④ ルータのDHCPによって割り当てられるIPアドレスのリース期間(時間)を変更する。
一定間隔の周期的な切断であれば、リース期間が原因とも考えられる。
ルータの機種によって設定できるリース期間は異なるが、可能であれば、「無期限」に設定すると解決する場合
もあるようである。
当方のルータには「無期限」の設定項目はないので、設定可能な最大値の「9999時間」にしてみた。
しかし、効を奏しない。
⑤ LANケーブルを交換する。
LANケーブルの老朽化、あるいはその規格の古さが原因、ということもあるらしい。
しかし、ルータとPCのある部屋が離れているため、ルータ・ハブ間のLANケーブルの長さが47mほどあり、
これを交換するのは、相当にしんどい。交換したところで、徒労に終わる恐れも大きい。二の足を踏んでいる
ところである。
⑥ ルータを交換する。
最終手段たるルータの交換は、先述したように光回線になるまで待ちたい。
⑦ NIC(Network Interface Controller)の電源の管理を無効にする。
ネットワークを利用していない時に、切断が起こっていると考えられる場合には、電源管理が怪しいようである。
ネットワークアダプタの「構成」の「電源の管理」を開き、「電力の節約のために、コンピューターでこのデバイス
の電源をオフにできるようにする」のチェックを外してみる。
残念ながら、やはり、繋がらなくなる。切断には関係ないようなので、このチェックは入れておくことにする。
【追記】:
⑧ Windows 7のSNP(Scalable Networking Pack)を無効にする。
SNPとは、通常CPUが行っているネットワーク処理をNICに行わせてCPUの負荷を軽減し、ネットワークのパフォー
マンスを最適化する機能であり、Windows 7から導入されたものだとされている。
しかし、ITproの記事、「[Windows 7編]ネットワーク設定を標準で使ってはいけない 」によると、初期設定で有効
化されているこのSNPという機能は、実際にはむしろ、ネットワーク処理を不安定にし、パフォーマンスを低下
させ、場合によっては正常に通信できない事態を引き起こすこともあるという。ネットワークアダプタなどの
ハードウェアがその機能に十分に対応していないことがあるためのようである。
上の記事に従って、SNPの3つの機能を無効にしてみたが、ネットワークは安定しなかった。私の環境では、SNP
が原因ではないようである。
三、
刀折れ、矢尽きかけ、もはやルータの買い替えしか方途は残されていないのか。悩ましい日々を過ごしていた或る夜、たまたまMicrosoft TechNetのサイトで「Windows 7 におけるネットワーク デバイスの電源管理」というページを目にした。そこに「ARP オフロード」、「NS オフロード」についての記述があった。
「Windows 7 では、ネットワーク上での存在の ARP および NS オフロードがサポートされるようになりました。」
「ARP オフロードは、ネットワークアダプターがコンピューターのスリープ状態を解除せずに IPv4 ARP 要求に
応答する機能です。」
「NS オフロードは、ネットワークアダプターがコンピューターのスリープ状態を解除せずに近隣アドバタイズによって
近隣探索近隣要請要求に応答する機能です。」
これらのオフロードは、ネットワークアダプタの「詳細設定」の項目にあったはず。不勉強ゆえに、これらの機能についての知識はないが、これらが古いルータに悪さをしてるであろうという疑いは持ち得た。そこには、「これらのオフロードのサポートはネットワーク アダプターとドライバー (NDIS 6.20) によって異なり、以前のハードウェアでは使用できない場合があ」るとされ、これらのオフロードの機能を有効にするには、ハードウェアとドライバーの両方がそれぞれARPオフロード、NSオフロードをサポートしている必要があると記されていたからである。
【追記】 不案内な通信ネットワークの用語を調べた。
● ARP(Address Resolution Protocol ):IPv4において、イーサネット上のコンピュータがお互いに識別し合う
ためのプロトコルである。IPv4のInternet Control Message Protocol(ICMPv4)とは別の専用のプロト
コルとして、RFC 826、RFC 5227、RFC 5494で定義されている。
● 近隣探索プロトコル(Neighbor Discovery Protocol, 略称NDP):「近隣(者)発見プロトコル」とも。
「同一リンク上のIPv6のノードが、お互いの存在を発見し、お互いのリンク層アドレスを決定し、ルータを見
つけ、動作中の近隣者に至るパスに関する到達可能な情報を維持するために」(RFC 2461)使用される
プロトコルである。近隣探索とは要するに、ノード(node:通信ネットワークを構成する中継点・端末を指す。
ホストコンピュータ、ルータなどの通信機器のことである)が、同じリンク上にある他のノードを見つけ出すこと
であり、ARP等と同様の役割を果たす。IETF(Internet Engineering Task Force)のネットワーク作業部会
(Network Working Group)は、IPv4のARPと異なり、IPv6においてはInternet Control Message
Protocol for IPv6(ICMPv6)の枠組みを利用して「近隣探索(ND)」の仕様を定め、RFC 2461として
公開している。
● 近隣要請(Neighbor Solicitation、略称NS):近隣ノードのリンク層アドレスを決定するため、又はキャッシュ
されたリンク層アドレスで近隣者にまだ到達可能であるかを確かめるために送信される近隣探索プロトコル
(NDP)メッセージをいう。
● 近隣広告(Neighbor Advertisement、略称NA):近隣通知とも。近隣要請(NS)メッセージに応答する
NDPメッセージをいう。アドレス情報などを広告(通知)する。
オフロードとは、一般に、ネットワーク通信に伴うOSへの負荷を軽減させるために、ネットワークアダプタに
ある程度の処理を任せるという仕組みを指し、ここに上がったARPオフロードとNSオフロードという機能は、
PCがスリープ状態であってもネットワークアダプターが独自に各要求に応答するものということになる。
※ 上記以外の参考ウェブページ
「Address Resolution Protocol」 - Wikipedia
「IPv6関連用語集 第一版」 - 財団法人インターネット協会 IPv6ディプロイメント委員会
「近隣者発見プロトコル」 - Wikipedia
「近隣探索(ND)」 - TechNet
早速、ネットワークアダプタの「詳細設定」を開き(デバイス マネージャからでも、通知領域のネットワークのアイコンからでも、お好みで)、「ARP Offload」及び「NS Offload」を「無効」に変更した。私は、PCをスリープ状態にすることはないので、これらの機能はいずれにせよ不要なのである。
果たせるかな、既に10日以上が経過しているが、ネットワーク接続は切断することなく、安定している。
ネットワーク接続の断続的な切断に悩まされ、万策尽きたという方、ネットワークアダプタの「ARP Offload」及び「NS Offload」の双方を無効にしてみられることをお勧めします。もちろん、これらの機能が不要だという場合に限られますが。
【追記】:また、時折ルータとの接続が不安定となり、インターネットへの接続が安定しない場合があったので、
ハブ(L2スイッチ)を最新のものに交換してみた。これは効果があった。ネットワークの安定的な接続を
確保するには、ハブの交換も有効であろう。
【追記】:ところが、大雨に見舞われた日に落雷による被害を避けるため、PC関係のすべての機器の電源を落とし、
改めて確認するならば、ネットワーク接続、殊にインターネット接続における意図しない頻繁な切断に対して、我々一般のユーザが採りうる有効な対処法は、今のところ、①ネットワークアダプタの「ARP Offload」及び「NS Offload」を無効にする、それが功を奏さなければ、②ハブ(L2スイッチ)を最新のものに交換する、それでも改善しない場合は最終手段として、③ルータを最新のものに、できれば各メーカーの機種の中で信頼性の高い定評のあるものに交換する、ということになろうか。
もちろん、最新のルータに交換したとしても、ネットワーク内にWindows 7ないし8とそれ以外のOSが混在している場合は、必要がない限り、ネットワークアダプタのIPv6関連項目及びARP Offload及びNS Offloadを無効にしておく方が、後顧の憂いを断つことになろう。
この一文が、不安定なネットワーク接続ないしインターネット接続に悩まされている方々の一助になれば幸いである。
Windows 7を使い始めて以来、ずっと悩まされ続けてきた問題が、ネットワーク接続の頻々たる切断である。しかも、一旦切断されると、容易に復旧しないのである。
XP機のみでネットワークを組んでいたときは、これほど頻繁に接続が切れることはなかった。そこへWin 7機を参加させてから、ルータに繋がらなくなるという現象がほぼ2日おきに発生するのである。
ネットワークを使用していないにもかかわらず、突然、LAN接続の送受信を示すルータのモニターランプが高速で点滅し始めるのである。そうなると、どのPCもルータに接続できなくなるのである。具体的には、ルータのDHCP機能が働くなり、いずれのPCも適切なIPアドレスが取得できず、「169.254.」で始まるリンク・ローカル・アドレスがOSによって割り当てられることになり、インターネットに接続できなくなるのである。
ルータの電源のON・OFFを何度か繰り返し、それでも復旧しないしないときは、LANケーブルを抜き、あるいはハブの電源を切って、ルータの電源を入れるなど、種々の手を尽くしてようやく接続が回復するのである。
二、
ウェブを調べると、これと似た現象に多くの人が悩まされていることが分かる。しかし、なかなか有効な解決策に出会えず、結局、ルータの買い替えを余儀なくされる人が少なくないようである。
確かに、当方のルータは、ISDNの頃から使っている古いものであるが、未だに光が届いていない現時点では、ルータを交換するのは、ためらわれる。何とか、ルータを買い替えずに、解決したいものである。
ウェブを巡ってみると、いろいろと方策が挙がっているので、試してみる。
① ルータのファームウェアを更新する。
残念ながら、ルータがあまりにも古すぎてファームウェアの更新はない。
② ネットワークアダプタの「詳細設定」にある「Flow Control」を「Disabled」から「Rx & Tx enabled」にする。
ディバイスマネージャから「詳細設定」を見てみると、「フローコントロール」は「有効」となっている。
③ IPv6を無効にする。
ルータがIPv6に対応しきれていないこともあるという。
コントロール パネル→ 「ネットワークと共有センター」→「ローカルエリア接続」→「プロパティ」の
プロトコル TCP/IPv6のチェックを外す。
その「プロパティ」の「構成」から「詳細設定」を開き、
TCPチェックサムオフロード(IPv6)
UDPチェックサムオフロード(IPv6)
一括送信オフロードv2(IPv6)
これら全ての項目を「無効」にしてみる。
さらに、ルータ側の「IPv6ブリッジ機能」も「OFF」にしてみる。
しかし、ネットワーク接続は切れてしまう。
④ ルータのDHCPによって割り当てられるIPアドレスのリース期間(時間)を変更する。
一定間隔の周期的な切断であれば、リース期間が原因とも考えられる。
ルータの機種によって設定できるリース期間は異なるが、可能であれば、「無期限」に設定すると解決する場合
もあるようである。
当方のルータには「無期限」の設定項目はないので、設定可能な最大値の「9999時間」にしてみた。
しかし、効を奏しない。
⑤ LANケーブルを交換する。
LANケーブルの老朽化、あるいはその規格の古さが原因、ということもあるらしい。
しかし、ルータとPCのある部屋が離れているため、ルータ・ハブ間のLANケーブルの長さが47mほどあり、
これを交換するのは、相当にしんどい。交換したところで、徒労に終わる恐れも大きい。二の足を踏んでいる
ところである。
⑥ ルータを交換する。
最終手段たるルータの交換は、先述したように光回線になるまで待ちたい。
⑦ NIC(Network Interface Controller)の電源の管理を無効にする。
ネットワークを利用していない時に、切断が起こっていると考えられる場合には、電源管理が怪しいようである。
ネットワークアダプタの「構成」の「電源の管理」を開き、「電力の節約のために、コンピューターでこのデバイス
の電源をオフにできるようにする」のチェックを外してみる。
残念ながら、やはり、繋がらなくなる。切断には関係ないようなので、このチェックは入れておくことにする。
【追記】:
⑧ Windows 7のSNP(Scalable Networking Pack)を無効にする。
SNPとは、通常CPUが行っているネットワーク処理をNICに行わせてCPUの負荷を軽減し、ネットワークのパフォー
マンスを最適化する機能であり、Windows 7から導入されたものだとされている。
しかし、ITproの記事、「[Windows 7編]ネットワーク設定を標準で使ってはいけない 」によると、初期設定で有効
化されているこのSNPという機能は、実際にはむしろ、ネットワーク処理を不安定にし、パフォーマンスを低下
させ、場合によっては正常に通信できない事態を引き起こすこともあるという。ネットワークアダプタなどの
ハードウェアがその機能に十分に対応していないことがあるためのようである。
上の記事に従って、SNPの3つの機能を無効にしてみたが、ネットワークは安定しなかった。私の環境では、SNP
が原因ではないようである。
三、
刀折れ、矢尽きかけ、もはやルータの買い替えしか方途は残されていないのか。悩ましい日々を過ごしていた或る夜、たまたまMicrosoft TechNetのサイトで「Windows 7 におけるネットワーク デバイスの電源管理」というページを目にした。そこに「ARP オフロード」、「NS オフロード」についての記述があった。
「Windows 7 では、ネットワーク上での存在の ARP および NS オフロードがサポートされるようになりました。」
「ARP オフロードは、ネットワークアダプターがコンピューターのスリープ状態を解除せずに IPv4 ARP 要求に
応答する機能です。」
「NS オフロードは、ネットワークアダプターがコンピューターのスリープ状態を解除せずに近隣アドバタイズによって
近隣探索近隣要請要求に応答する機能です。」
これらのオフロードは、ネットワークアダプタの「詳細設定」の項目にあったはず。不勉強ゆえに、これらの機能についての知識はないが、これらが古いルータに悪さをしてるであろうという疑いは持ち得た。そこには、「これらのオフロードのサポートはネットワーク アダプターとドライバー (NDIS 6.20) によって異なり、以前のハードウェアでは使用できない場合があ」るとされ、これらのオフロードの機能を有効にするには、ハードウェアとドライバーの両方がそれぞれARPオフロード、NSオフロードをサポートしている必要があると記されていたからである。
【追記】 不案内な通信ネットワークの用語を調べた。
● ARP(Address Resolution Protocol ):IPv4において、イーサネット上のコンピュータがお互いに識別し合う
ためのプロトコルである。IPv4のInternet Control Message Protocol(ICMPv4)とは別の専用のプロト
コルとして、RFC 826、RFC 5227、RFC 5494で定義されている。
● 近隣探索プロトコル(Neighbor Discovery Protocol, 略称NDP):「近隣(者)発見プロトコル」とも。
「同一リンク上のIPv6のノードが、お互いの存在を発見し、お互いのリンク層アドレスを決定し、ルータを見
つけ、動作中の近隣者に至るパスに関する到達可能な情報を維持するために」(RFC 2461)使用される
プロトコルである。近隣探索とは要するに、ノード(node:通信ネットワークを構成する中継点・端末を指す。
ホストコンピュータ、ルータなどの通信機器のことである)が、同じリンク上にある他のノードを見つけ出すこと
であり、ARP等と同様の役割を果たす。IETF(Internet Engineering Task Force)のネットワーク作業部会
(Network Working Group)は、IPv4のARPと異なり、IPv6においてはInternet Control Message
Protocol for IPv6(ICMPv6)の枠組みを利用して「近隣探索(ND)」の仕様を定め、RFC 2461として
公開している。
● 近隣要請(Neighbor Solicitation、略称NS):近隣ノードのリンク層アドレスを決定するため、又はキャッシュ
されたリンク層アドレスで近隣者にまだ到達可能であるかを確かめるために送信される近隣探索プロトコル
(NDP)メッセージをいう。
● 近隣広告(Neighbor Advertisement、略称NA):近隣通知とも。近隣要請(NS)メッセージに応答する
NDPメッセージをいう。アドレス情報などを広告(通知)する。
オフロードとは、一般に、ネットワーク通信に伴うOSへの負荷を軽減させるために、ネットワークアダプタに
ある程度の処理を任せるという仕組みを指し、ここに上がったARPオフロードとNSオフロードという機能は、
PCがスリープ状態であってもネットワークアダプターが独自に各要求に応答するものということになる。
※ 上記以外の参考ウェブページ
「Address Resolution Protocol」 - Wikipedia
「IPv6関連用語集 第一版」 - 財団法人インターネット協会 IPv6ディプロイメント委員会
「近隣者発見プロトコル」 - Wikipedia
「近隣探索(ND)」 - TechNet
早速、ネットワークアダプタの「詳細設定」を開き(デバイス マネージャからでも、通知領域のネットワークのアイコンからでも、お好みで)、「ARP Offload」及び「NS Offload」を「無効」に変更した。私は、PCをスリープ状態にすることはないので、これらの機能はいずれにせよ不要なのである。
果たせるかな、既に10日以上が経過しているが、ネットワーク接続は切断することなく、安定している。
ネットワーク接続の断続的な切断に悩まされ、万策尽きたという方、ネットワークアダプタの「ARP Offload」及び「NS Offload」の双方を無効にしてみられることをお勧めします。もちろん、これらの機能が不要だという場合に限られますが。
【追記】:また、時折ルータとの接続が不安定となり、インターネットへの接続が安定しない場合があったので、
ハブ(L2スイッチ)を最新のものに交換してみた。これは効果があった。ネットワークの安定的な接続を
確保するには、ハブの交換も有効であろう。
【追記】:ところが、大雨に見舞われた日に落雷による被害を避けるため、PC関係のすべての機器の電源を落とし、
その日一日、電源プラグをコンセントから抜いたままにし、雨の上がった翌日元に戻したところ、ルータとハブとの接続が回復しない。半日を費やしても接続させることがでず、ハブが故障したのかと思ったが、古いハブを介在させると、不思議なことに接続は回復した。いったい何がどうなっているのか。さっぱりである。
もはや我慢の限界である。
ルータを交換することにした。YAMAHAのNVR500。伝家の宝刀はまだ抜きたくはなかったが、ルータとハブとの切断にこれ以上煩わされたくなかった。
さすがはNVR500である。これまでの煩悶・懊悩は何だったのか。ハブとの接続は難なく回復。ネットワークは、台風一過の澄み切った空のごとく、と大仰にも相応しくない形容を施したくなるほど安定している。ただし、このNVR500は一般家庭用としては少し高価であり、ノートPCやiPad等を数台インターネットに接続させるというだけの使用では不要無用な機能が多く、そういう用途には不向きかもしれない(NVR500については、「MN128-SOHO IB3からNVR500へ」を御覧下さい)。
なお、その後、光回線の利用が可能になったので、我が家のネットワーク及びインターネット環境は一応整ったといえる。
もはや我慢の限界である。
ルータを交換することにした。YAMAHAのNVR500。伝家の宝刀はまだ抜きたくはなかったが、ルータとハブとの切断にこれ以上煩わされたくなかった。
さすがはNVR500である。これまでの煩悶・懊悩は何だったのか。ハブとの接続は難なく回復。ネットワークは、台風一過の澄み切った空のごとく、と大仰にも相応しくない形容を施したくなるほど安定している。ただし、このNVR500は一般家庭用としては少し高価であり、ノートPCやiPad等を数台インターネットに接続させるというだけの使用では不要無用な機能が多く、そういう用途には不向きかもしれない(NVR500については、「MN128-SOHO IB3からNVR500へ」を御覧下さい)。
なお、その後、光回線の利用が可能になったので、我が家のネットワーク及びインターネット環境は一応整ったといえる。
改めて確認するならば、ネットワーク接続、殊にインターネット接続における意図しない頻繁な切断に対して、我々一般のユーザが採りうる有効な対処法は、今のところ、①ネットワークアダプタの「ARP Offload」及び「NS Offload」を無効にする、それが功を奏さなければ、②ハブ(L2スイッチ)を最新のものに交換する、それでも改善しない場合は最終手段として、③ルータを最新のものに、できれば各メーカーの機種の中で信頼性の高い定評のあるものに交換する、ということになろうか。
もちろん、最新のルータに交換したとしても、ネットワーク内にWindows 7ないし8とそれ以外のOSが混在している場合は、必要がない限り、ネットワークアダプタのIPv6関連項目及びARP Offload及びNS Offloadを無効にしておく方が、後顧の憂いを断つことになろう。
この一文が、不安定なネットワーク接続ないしインターネット接続に悩まされている方々の一助になれば幸いである。