見出し画像

Windows 11用のWake-on-LANアプリ「Wake My PC」を作ってみた

※この記事は一部AIを使用しています
※Amazon・楽天アフィリエイトに参加中です
※PR・アフィリエイトリンクを含む場合があります

こんにちは、Emuです。
いつもご覧くださり、ありがとうございます!
今日もガジェットをゆるっとお届け。

自宅や職場にあるPCを、別のWindows PCから遠隔で起動したいことがあります。先日、完全リモートデスクトップ化したPCとか。

今回は、Wake-on-LAN (WOL)を使って、PCを起動できるWindowsアプリ「Wake My PC」をAIと相談しながら作成しました。

Wake My PC トップ画面

📍Wake My PCの主な機能

  • 複数PCの登録

  • 設定項目:

    • PC名

    • MACアドレス

    • ブロードキャストIP

    • UDPポート

  • Magic Packetの送信

  • Pingによるオンライン状態確認

  • PC情報の編集・削除

  • 設定の自動保存

  • リモートデスクトップ接続の起動

  • Windows 11風のダークUI

  • Windowsショートカット用アイコン

機能を持つWindows向けGUIアプリです。開発環境から手順などをまとめたので、興味がある方はお試しください。


開発環境

アプリを次の環境で作成しました。

  • Windows 11

  • Visual Studio

  • C#

  • WPF

  • .NET

  • Visual Studioの「.NET デスクトップ開発」ワークロード

WPFはWindows向けのデスクトップアプリをC#で作成するための仕組みです。今回のアプリはWindows専用です。Windowsとの相性がよく、単体のアプリケーションとして扱いやすいWPFを採用しました。

アプリの基本構成

Wake My PC トップ画面

アプリを起動すると、登録済みPCの一覧が表示されます。

各PCには、次のボタンがあります。

  • 起動

  • 状態確認

  • RDP

  • 編集

  • 削除

「PCを追加」から起動対象のPC情報を登録します。

登録する項目は次のとおりです。

PC登録画面

PC名

一覧に表示する名前です。

例:

リビングPC
作業用PC
OptiPlex 3050

MACアドレス

対象PCのネットワークアダプターに割り当てられている物理アドレスです。

例:

AA-BB-CC-DD-EE-FF

対象PCでコマンドプロンプトを開き、次のコマンドを実行すると確認できます。

ipconfig /all

表示されたネットワークアダプターの「物理アドレス」がMACアドレスです。

ブロードキャストIP

Magic Packetを送信するネットワークのブロードキャストアドレスです。対象PCのIPアドレスに合わせて設定します。

例えば、対象PCのIPアドレスが次の場合、

192.168.0.20

一般的なサブネット設定では、ブロードキャストIPは次になります。

192.168.0.255

同様に、対象PCが192.168.1.xのネットワークにある場合は、通常、次を指定します。

192.168.1.255

UDPポート

Wake-on-LANでは、一般的にUDPポート7または9が使われます。今回は初期値として次を使用しました。

9

確認先IPまたはホスト名

対象PCが起動したかどうかを、Pingで確認するために使います。

例:

192.168.0.20

この値は、リモートデスクトップ接続の起動先としても使用されます。

Magic Packetの送信

Wake-on-LANでは、「Magic Packet」と呼ばれる特殊なデータをネットワークへ送信します。

Magic Packetは、次のような構造になっています。

  • FFを6バイト

  • 対象PCのMACアドレスを16回繰り返す

Wake My PCでは、このMagic Packetを指定されたブロードキャストIPと、UDPポートへ送信します。

一覧にある「起動」ボタンを押すだけで送信できるため、毎回コマンドを入力する必要はありません。

起動後のオンライン確認

Magic Packetを送信しても、PCが実際に起動するまでには少し時間がかかります。

そこで、Wake My PCではMagic Packet送信後、登録された確認先IPへ一定間隔でPingを送ります。応答があれば、状態を「オンライン」に変更します。手動で確認したい場合は、一覧の「確認」ボタンも使用できます。

ただし、対象PCのWindowsファイアウォールで、Pingへの応答が無効になっていると、PCが起動していてもオフライン表示される場合があります。

リモートデスクトップ接続

対象PCが起動したあと、そのまま操作できるように「RDP」ボタンも追加しました。

このボタンを押すと、Windows標準のリモートデスクトップ接続が起動します。接続先には、登録した確認先IPまたはホスト名が使用されます。

対象PC側では、あらかじめリモートデスクトップを有効にしておく必要があり。なお、Windows Homeは通常、リモートデスクトップの接続先として使用できません。接続を受け付ける側には、Windows Proなどが必要です。

設定の自動保存

登録したPC情報は、JSON形式で自動保存されます。

保存場所は次のとおりです。

%LOCALAPPDATA%\WakeMyPC\profiles.json

アプリを終了しても、次回起動時に登録内容が自動的に読み込まれます。保存される主な情報は次のとおりです。

  • PC名

  • MACアドレス

  • ブロードキャストIP

  • UDPポート

  • 確認先IPまたはホスト名

Visual StudioでReleaseビルド

普段使いできるアプリケーションを作成するため、Visual StudioでReleaseビルドを行います。

Visual Studio上部のビルド構成を、次のように変更します。

Debug → Release

その後、メニューから次を選択します。

ビルド → ソリューションのビルド

ショートカットキーを使う場合は、
次でも実行できます。

Ctrl + Shift + B

ビルドが成功すると、実行用ファイルが次のようなフォルダーに生成されます。

WakeMyPC\bin\Release\net10.0-windows\

この中にあるWakeMyPC.exeが、Windowsから起動するアプリケーションです。

Windowsアプリとして使う

生成されたフォルダーには、EXE以外にも実行に必要なファイルが含まれています。

そのため、WakeMyPC.exeだけを移動するのではなく、フォルダー内のファイルをまとめて保管します。

デスクトップから起動したい場合は、WakeMyPC.exeのショートカットを作成します。

手順は次のとおりです。

  1. WakeMyPC.exeを右クリック

  2. 「その他のオプションを確認」を選択

  3. 「送る」を選択

  4. 「デスクトップ(ショートカットを作成)」を選択

作成したショートカットには、Wake My PC用に作成したICO形式のアイコンを設定しました。ショートカットのプロパティから「アイコンの変更」を選び、作成した.icoファイルを指定します。

別のPCで使う

別のWindows PCで使用する場合は、アプリのフォルダー一式をUSBメモリなどでコピーします。コピー先でWakeMyPC.exeを起動すれば使用できます。

実行先のPCに対応する.NET Desktop Runtimeが、入っていない場合はMicrosoft公式からインストールします。

登録情報も移行したい場合は、次のファイルをコピーします。

%LOCALAPPDATA%\WakeMyPC\profiles.json

コピー先のPCでも、同じ場所へ配置します。

ただし、使用するネットワークが変わる場合は、ブロードキャストIPを新しいネットワークに合わせて変更する必要があります。

対象PC側で必要なWake-on-LAN設定

アプリを作成しただけでは、Wake-on-LANは利用できません。起動される側のPCでも設定が必要です。

BIOSまたはUEFI

BIOSまたはUEFIの電源管理設定で、次のような項目を有効にします。

Wake on LAN
Power On By PCI-E
Resume By LAN

名称はメーカーや機種によって異なります。

また、ErPなどの省電力設定が有効になっていると、シャットダウン時にLANアダプターへの給電が止まり、Wake-on-LANが利用できない場合があります。

Windowsのネットワークアダプター

デバイスマネージャーから、有線LANアダプターのプロパティを開きます。「詳細設定」で、次の項目を有効にします。

Wake on Magic Packet

「電源の管理」では、次の項目を有効にします。

このデバイスで、コンピューターのスタンバイ状態を解除できるようにする

必要に応じて、次の項目も有効にします。

Magic Packetでのみ、コンピューターのスタンバイ状態を解除できるようにする

シャットダウン状態から起動できない場合は、Windowsの「高速スタートアップ」を無効にすると、改善することがあります。

有線LANと無線LAN

Wake-on-LANは、有線LANでの利用が最も確実です。無線LANで起動するWake on Wireless LANは、次のすべてが対応している必要があります。

  • PC本体

  • 無線LANアダプター

  • BIOSまたはUEFI

  • アクセスポイント

そのため、最初は有線LANを使って、動作確認するのがオススメです。

ルーター越しのWake-on-LAN

通常のルーターは、ブロードキャストパケットを別のネットワークへ転送しません。

そのため、インターネット越しに、Wake-on-LANを利用する場合は追加設定が必要です。

方法としては、次のようなものがあります。

  • VPNで自宅や社内のLANへ接続する

  • ルーターのWake-on-LAN機能を利用する

  • Directed Broadcastを設定する

  • 静的ARPとUDPポート転送を組み合わせる

セキュリティと安定性を考えると、VPN経由で家庭内LANへ接続してから、Magic Packetを送る方法が比較的安全です。

UDPポートをインターネットへ直接公開する方法はセキュリティ上おすすめできません。

完成したアプリ

最終的に、Wake My PCは次の流れで、利用できるようになりました。

  1. アプリを起動

  2. 対象PCを登録

  3. 「起動」ボタンでMagic Packet送信

  4. Pingでオンライン状態を確認

  5. 「RDP」ボタンでリモートデスクトップ接続

PCを起動してからリモート操作へ移るまでを、1つのアプリから行えます。

登録情報は自動保存されるため、普段はWake My PCを起動して、「起動」ボタンを押すだけです。

アイコンはこんな感じに作成してもらいました。

まとめ

リモートデスクトップ専用機

今回は、Windows 11向けのWake-on-LANアプリ、「Wake My PC」を作成しました。

Wake-on-LAN自体はコマンドや既存ツールでも利用できますが、自分の環境に合わせたGUIアプリにすることで、操作が非常に簡単になりました。

特に便利だった機能は次のとおりです。

  • 複数PCを一覧管理できる

  • ボタン1つでMagic Packetを送信できる

  • PCが起動したか確認できる

  • そのままリモートデスクトップを起動できる

  • 登録内容が自動保存される

小規模なWindowsアプリであれば、AIと相談しながら動作する形まで作成できることも分かりました。

Wake-on-LANを日常的に使っている人や、別室のPC・小型PC・サーバーを遠隔運用したい人には、使いやすいツールになったと思います。

最後までお読みいただき感謝です。
スキとフォローしていただけると嬉しいです。
皆様も良いガジェットライフを!

ではでは。

🔗オススメ・関連記事👇


#emulog
#emulogガジェット好き

いいなと思ったら応援しよう!

EmuLog@在宅ワーク&ガジェット好き&物欲解放の備忘録 応援ありがとうございます! いただいたチップはブログ運営に充てさせていただきます😉 今後ともよろしくお願いします!