Windows 7 выходит из спящего режима при открытии удаленного рабочего стола
Можно ли каким-то образом автоматически отключить компьютер с Windows 7 при попытке подключиться к нему с помощью удаленного рабочего стола?
Опция энергосбережения компьютера, к которому я хочу подключиться (обеспечивается групповой политикой, как я полагаю), состоит в том, чтобы спать через 30 минут, что означает, что мне нужно либо физически пройтись, чтобы нажать клавишу, либо запустить отдельный Wake-on-LAN инструмент, чтобы вывести его из спящего режима.
Было бы неплохо, если бы клиент Remote Desktop Connection автоматически отправлял пакет Wake-on-LAN - возможно ли это?
6 ответов
Вам нужно будет отправить волшебный пакет (для пробуждения по локальной сети) через маршрутизатор. Сложно, потому что маршрутизаторы не пересылают их по умолчанию, но здесь есть обходные пути:
Чтобы разбудить компьютер из Интернета, вам необходимо широкополосное соединение с маршрутизатором, подключенным к модему, которое поддерживает ваше соединение (вам нужен маршрутизатор, даже если у вас статический IP-адрес).
Пробуждение компьютера от удаленного компьютера осуществляется путем отправки волшебного пакета через Интернет с использованием вашего IP-адреса в Интернете и MAC-номера компьютера, который вы собираетесь активировать.
Если вы не знаете свой IP-адрес:
Ссылка на: Как найти интернет-адрес моего компьютера / сервера из удаленного местоположения.
Вы должны подготовить систему для Wake Up через Интернет.
Откройте порт с точки зрения маршрутизатора и программного брандмауэра (используйте большой номер порта, чтобы он не конфликтовал ни с каким другим портом, хороший пример - 5850).
Назначьте порт внутреннему IP-адресу компьютера, который вы хотите использовать в WOL (вы можете использовать порт только для одного компьютера).
Получите эту утилиту, которая позволит вам определить порт для WOL.
Ссылка на: Wake on LAN для графического интерфейса пользователя Windows (WOL GUI)
Возьмите с собой копию графического интерфейса WOL и запишите номер MAC. В удаленном местоположении запустите WOL GUI и введите свой MAC-номер, введите Интернет-адрес (Интернет-IP), введите номер порта, который вы оставили открытым. Нажмите "Разбуди меня", и это должно сработать.
Утилита:
Утилита волшебный пакет 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
- Alt + w разбудит удаленный компьютер
измените скрипт соответствующим образом, чтобы путь указывал на wolcmd.exe
Исполняемый файл и MAC, IP и подсеть верны.
Улучшение ответа Джона Сибли... если в окнах вы можете избежать C# кода, используя команду "timeout", как показано ниже.
ECHO OFF
CLS
WolCmd.exe MAC_OF_NIC IP_ADDR MASK 7
timeout 10
ECHO Starting remote desktop connection
start mstsc.exe mycomputer.rdp
Посмотрите этот ответ в StackOverflow для получения дополнительной информации о разделе сна файла.cmd: https://stackoverflow.com/questions/4317020/windows-batch-sleep
Вам нужен сетевой адаптер, который поддерживает разгрузку ARP и шаблон пробуждения TCP SYN, как указано в http://technet.microsoft.com/en-us/library/ee617165%28v=ws.10%29.aspx
Если эти функции поддерживаются и включены, то при включении удаленного рабочего стола операционная система не будет предупреждать вас о политике сна / гибернации.
Удаленный рабочий стол не имеет встроенной функции удаленного включения.
Возможно, вы сможете настроить свою сетевую карту для пробуждения по любому пакету. Однако это, вероятно, не будет работать так, как вы предполагали, поскольку не будет различать попытку подключения к удаленному рабочему столу и то, что кто-то просто сканирует вашу сеть или скрытый пакет от службы, которую вы использовали.
На данный момент вам, вероятно, придется согласиться с двухэтапным процессом: 1) разбудить компьютер с одним приложением, 2) подключиться через удаленный рабочий стол.
Используя информацию из других ответов, я создал папку, содержащую следующие файлы:
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.exe, сохранив приведенный ниже исходный код как sleep.cs и скомпилировав его с помощью компилятора C#, поставляемого с платформой.NET:
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);
}
}
}
}
Существуют различные причины типа, связанные с появлением сообщения об ошибке.
Недостаточно памяти
Закройте другие программы и попробуйте снова подключиться. Если проблема не устранена, перезагрузите компьютер и повторите попытку подключения. Если вы по-прежнему не можете подключиться, обратитесь к администратору сети или в службу технической поддержки. (Для получения дополнительной информации см. Предотвращение проблем с нехваткой памяти.)
Сбой в работе сети
Убедитесь, что ваше сетевое соединение работает, например, получая доступ к какому-либо локальному или глобальному домену, или если кабель Ethernet подключен к сетевому адаптеру или включен беспроводной коммутатор.
Удаленный компьютер не может быть найден
Убедитесь, что удаленный рабочий стол включен. Проверьте, работает ли удаленный компьютер (ни в спящем, ни в режиме гибернации). Проверьте имя компьютера или его IP-адрес и убедитесь, что вы ввели его правильно.
Подключение домашнего компьютера к компьютеру в корпоративном домене требует промежуточного шага для обеспечения связи компьютеров, например, для установления соединения виртуальной частной сети (VPN) с корпоративной сетью.
Или другое приложение может использовать тот же порт, что и RDP.
Более подробные примеры, чем мои самые распространенные случаи, или подробности о каждом из них смотрите в: