メインコンテンツへスキップ
見出し画像

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ガジェット好き

    あなたへのおすすめ