web-dev-qa-db-ja.com

リモートデスクトップを開くとWindows 7がスリープ状態から抜け出す

Windows 7マシンをリモートデスクトップで接続しようとしたときに、自動的にスリープ状態を解除する方法はありますか?

接続したいマシンの省電力オプション(私が信じているグループポリシーによって強制されています)は30分後にスリープすることです。つまり、キーを押すために物理的に歩くか、別のウェイクオンを起動する必要があります。スリープモードから抜け出すためのLANツール。

リモートデスクトップ接続クライアントがWake-on-LANパケットを自動的に送信するといいのですが、これは可能ですか?

24
John Sibly

ルーターを介してマジックパケット(Wake ON LAN用)を送信する必要があります。ルーターはデフォルトでこれらを転送しないため難しいが、見つかった回避策がある here

コンピューターをインターネットから起動するには、モデムに接続されたルーターとブロードバンド接続を維持して、接続を維持します(静的IPを使用している場合でもルーターが必要です)。

リモートからコンピューターをウェイクアップするには、インターネットのIPアドレスと、ウェイクアップするコンピューターのMAC番号を使用して、マジックパケットをインターネット経由で送信します。

IPアドレスがわからない場合:

リンク先: コンピュータ/サーバーのインターネットアドレスをリモートロケーションから見つける方法

Wake Up Over the Internetのシステムを準備する必要があります。

ルーターとソフトウェアファイアウォールを考慮してポートを開きます(他のポートと競合しないように大きなポート番号を使用します。5850が良い例です)。

WOLするコンピューターの内部IPにポートを割り当てます(ポートは1台のコンピューターでのみ使用できます)。

このユーティリティを入手すると、WOLのポートを定義できます。

リンク先: Wake on LAN for Windowsグラフィカルユーザーインターフェイス(WOL GUI)

WOL GUIのコピーを持って行き、MAC番号を書き留めます。リモートの場所でWOL GUIを起動し、MAC番号を入力します。インターネットアドレス(インターネットIP)を入力し、開いたままにしたポート番号を入力します。 Wake me Upをクリックすると、機能するはずです。

ユーティリティ:

alt text

Magic packet GUIユーティリティはフリーウェアです。


コマンドラインバージョンのWake On LAN とともに、ホットキーを使用してスリープ解除することもできます。

構文:

C:\path\to\wolcmd.exe [Mac address] [IP address] [Subnet mask] [port number]

物事を簡単にする:

  • ダウンロード AutoHotkey
  • 次のスクリプトを使用します。
!w :: Run、C:\ wolcmd.exe 009027a324fe 195.188.159.20 255.255.255.0 8900
  • Altw リモートコンピュータをスリープ解除します

それに応じてスクリプトを変更し、パスがwolcmd.exe実行可能ファイルを指し、MAC、IP、およびサブネットが正しいようにします。

13
John T

John Siblyの回答を改善しています... Windowsで以下のように "timeout"コマンドを使用してC#コードを回避できる場合。

ECHO OFF
CLS
WolCmd.exe MAC_OF_NIC IP_ADDR MASK 7
timeout 10
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp

.cmdファイルのスリープセクションに関するその他のオプションについては、StackOverflowでこの回答を参照してください: https://stackoverflow.com/questions/4317020/windows-batch-sleep

3
Dennis

リモートデスクトップには、組み込みのリモートウェイクアップ機能はありません。

パケットでウェイクアップするようにネットワークカードを構成できる場合があります。ただし、リモートデスクトップ接続の試行と、ネットワークをスキャンしている人や使用しているサービスからの潜在的なパケットを区別しないため、これはおそらく意図したとおりに機能しません。

現時点では、おそらく2つのステップのプロセスで解決する必要があります。1)1つのアプリケーションでコンピューターをスリープ解除する、2)リモートデスクトップ経由で接続する。

2
Jason R. Coombs

http://technet.Microsoft.com/en-us/library/ee617165%28v=に記載されているように、ARPオフロードとTCP= SYNスリープ解除パターン)をサポートするネットワークアダプターが必要です。 ws.10%29.aspx

これらの機能がサポートされ、有効になっている場合、リモートデスクトップをオンにしても、whindosはスリープ/休止状態ポリシーについて警告しません。

2
czz

他の回答の情報を使用して、次のファイルを含むフォルダーを作成しました。

connect.bat
mycomputer.rdp (remote desktop connection file)
sleep.exe (a little program to wait a specified number of milliseconds)
wolcmd.exe

そのため、connect.batを実行してコンピューターを起動し、10秒待ってから、リモートデスクトップ接続を開きます。

connect.batには以下が含まれます。

ECHO OFF
CLS
WolCmd.exe 0011AA22BB33 10.1.255.255 255.255.0.0 7
ECHO Sleeping...
Sleep.exe 10000
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp

以下のソースをsleep.csとして保存し、.NETフレームワークに付属するC#コンパイラを使用してそれをコンパイルすることで、sleep.exeを生成できます。

csc /out:sleep.exe c:\sleep.cs

Sleep.csのソース

using System;
using System.Threading;

namespace Sleep
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 1)
            {
                int period = 0;
                Int32.TryParse(args[0], out period);
                Console.WriteLine("Sleeping for {0} ms", period);
                Thread.Sleep(period);
            }
        }
    }
}
2
John Sibly

表示されるエラーメッセージに関連するさまざまなタイプの理由があります。

メモリーが充分ではありません

他のプログラムを閉じて、再度接続してください。問題が解決しない場合は、コンピュータを再起動してから、もう一度接続してみてください。それでも接続できない場合は、ネットワーク管理者またはテクニカルサポートに連絡してください。 (詳細については、メモリ不足の問題の防止を参照してください。)

ネットワーク障害

ネットワーク接続が機能していることを確認してください。ローカルまたはグローバルドメインにアクセスするか、イーサネットケーブルがネットワークアダプターに接続されているか、ワイヤレススイッチがオンになっている場合。

リモートコンピュータが見つかりません

リモートデスクトップが有効になっていることを確認します。リモートコンピュータが実行されているかどうかを確認します(スリープモードでも休止状態モードでもありません)。コンピューター名またはそのIPアドレスを確認し、正しく入力したことを確認します。

自宅のコンピューターを企業ドメインのコンピューターに接続するには、コンピューターが確実に通信できるようにするための中間手順が必要です。企業ネットワークへの仮想プライベートネットワーク(VPN)接続を確立します。

または、別のアプリケーションがRDPと同じポートを使用している可能性があります。

私の最も一般的なケースよりも詳細な例について、またはそれぞれの詳細については、以下を参照してください。

1
strpeter