Windowsのインターネット接続共有(ICS)は、インターネット接続を他のデバイスと共有するという、一見シンプルな機能の一つです。便利そうですよね?しかし、コンピューターを再起動した後、ローカルネットワーク上の他のデバイスが突然インターネットにアクセスできなくなってしまった経験はありませんか?これは、最近のWindows 10および11ビルドでは、トラフィックが数分間途絶えるとICSサービスが自動的にオフになり、自動的にオンに戻らないために発生します。再起動のたびに手動で設定を切り替えるのは面倒なので、少しイライラします。
幸いなことに、再起動後もICSを永続的に実行し続ける方法があります。これにより、手動で操作することなく共有接続がアクティブな状態を維持できます。その秘訣は、レジストリ設定を調整して、サービスが自動起動するように設定することです。複雑に聞こえるかもしれませんが、レジストリのDWORD値を有効にし、サービスが自動起動するように設定し、必要に応じてPowerShellスクリプトでプロセスを自動化するだけです。スクリプト作成に慣れている方や、手動での切り替えを回避したい方にとって、これは非常に便利な機能です。
Windows の再起動後に ICS が再起動しない問題を修正する方法
レジストリを通じてICSの再起動持続性を有効にする
これが根本的な修正です。Windows のデフォルトでは、トラフィックが検出されない場合、しばらくすると ICS が無効になります。そのため、ICS を有効にするためのレジストリキーを追加することが最初のステップです。これは(少なくともほとんどの環境では)再起動後にインターネット共有が失われるのを防ぐのに役立ちます。
- PowerShell を管理者として開きます。PowerShell を検索し、右クリックして [管理者として実行]を選択します。
- レジストリ DWORD を追加するには、次のコマンドを実行します。
New-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\SharedAccess -Name EnableRebootPersistConnection -Value 1 -PropertyType dword
これが役立つ理由:Windowsに、再起動後もICS接続を維持するよう指示します。なぜ機能するのかは定かではありませんが、一部のマシンでは、このちょっとした変更により、手動で切り替えることなく共有インターネット接続を維持できます。
ICSサービス(SharedAccess)を自動開始に設定する
次のステップは、Windowsの起動時にICSサービスが自動的に起動するようにすることです。手動または無効に設定されている場合は、手動で切り替える必要があります。PowerShellまたはサービスマネージャーを使用して変更してください。
- PowerShell の使用:
Set-Service SharedAccess -StartupType Automatic
または、GUIをご希望の場合は、「ファイル名を指定して実行」(Win + R)に「services.msc 」と入力し、「インターネット接続の共有(ICS)」を見つけます。右クリックして「プロパティ」を選択し、「スタートアップの種類」を「自動」に設定します。設定によっては、これだけでは再起動の問題が完全に解決されない場合がありますが、レジストリの調整と組み合わせることで、より確実な解決が可能になります。
ICSサービスを手動で開始する
設定を変更した後も実行されていない場合は、起動する必要があります。
Start-Service SharedAccess
これにより、ICSが現在アクティブであることが確認されます。これが完了すると、再起動後もICSは安定した状態を維持するはずです。ただし、設定によっては、トラフィックが検出されない場合にWindowsがICSを再び無効にしてしまう可能性があるため、レジストリの調整をお勧めします。
オプションでPowerShellスクリプトで自動化
技術に詳しい方、あるいはこの繰り返しにうんざりしている方は、このプロセス全体をスクリプト化できます。共有接続をすべて検索し、無効化してから再度有効化する、いわばリセットボタンのようなものです。まさにこれを実行するスクリプトは以下で紹介しており、タスクスケジューラ経由で起動時に実行できます。
$NetShareObject = New-Object -ComObject HNetCfg. HNetShare $list = New-Object System. Collections. Generic. List[System. Object] foreach( $connection in $NetShareObject. EnumEveryConnection ) { $config = $NetShareObject. INetSharingConfigurationForINetConnection( $connection ) if( $config. SharingEnabled -eq 1 ) { $type = $config. SharingConnectionType $list. Add( @($type, $config) ) $config. DisableSharing() } } Start-Sleep 1 foreach( $array in $list ) { $array[1].EnableSharing($array[0]) }
手動での切り替えを減らしたいですか?タスクスケジューラのスタートアップトリガーにこのスクリプトを設定すると、共有接続が自動的に更新されます。もちろん、これは完璧ではありませんし、Windowsはネットワークサービスで時々おかしな動作をすることがありますが、再起動のたびに手動で共有を無効/有効にするよりはましです。
もちろん、Windowsは必要以上に手間をかけざるを得ません。レジストリをいじったり、スクリプトで自動化したりしなければならない場合もあります。いずれにせよ、これで少なくともほとんどの場合、再起動後にインターネット共有が途切れることはなくなるはずです。
まとめ
EnableRebootPersistConnection共有を維持するには、レジストリ DWORD を有効にします。- SharedAccessサービスが自動的に開始するように設定します。
- 必要に応じてサービスを手動で開始します。
- 面倒な場合(または手動の手順が面倒な場合)は、自動化のために PowerShell スクリプトを使用します。
まとめ
Appleレベルのシンプルさではありませんが、これらの設定を微調整することで、再起動後もICSが問題なく動作するようになります。それでもまだ不安定な場合は、ドライバーやネットワークアダプターのファームウェアをアップグレードすると改善する場合があります。あるいは、頻繁にこれらの作業を行う場合は、適切なホットスポットデバイスを使用するのも良いでしょう。うまくいくことを祈っています。そうでなければ少し面倒ですが、少なくとも共有接続を安定させられる可能性が高まりました。