Как я могу спящий режим на Windows-машине, работающей под управлением Windows 7 или 8 через локальную сеть с другого компьютера?
Есть ли для этого функция WinAPI? Или мне нужно отправлять специальные магические пакеты или что-то вроде этого?
Все, что я знаю, это то, что PsShutdown.exe способен это сделать (якобы, я не пробовал).
Я не хочу использовать сторонние библиотеки, и я также не хочу запускать службу на компьютере, который должен быть спящим. Я хочу использовать существующий механизм.
Я также хотел бы знать, нужно ли мне изменять определенные настройки на целевом компьютере. Я не уверен, что это важное, но shutdown/s/m \\ComputerName
не работает на моем целевом ПК.
Насколько я знаю, единственный способ дистанционно спячки на машине - использовать тот же метод, что и psshutdown
: скопировать исполняемый файл на удаленную машину и установить его как системную службу.
API OpenSCManager позволяет указать целевой компьютер, и вы можете использовать возвращаемый дескриптор для вызова CreateService, а затем StartService. Служба может удалить себя, как только она выполнит свою работу.
Документ TechNet Перезапустите или закройте удаленный компьютер и задокументируйте причину, чтобы описать требования к использованию команды shutdown.exe
на удаленном компьютере.
Чтобы использовать эту функцию, на удаленном компьютере должна быть включена служба удаленного реестра.
Доступ к удаленному реестру или членство в группе " Администраторы " на удаленном компьютере - это минимум, необходимый для выполнения этой процедуры
InitiateShutdown
выглядит так, как будто API-интерфейсshutdown.exe
основан на множестве одинаковых флагов. Я думаю, вы обнаружите, что перечисленные выше требования удовлетворяют, используете ли вы API напрямую или черезshutdown.exe
(и я не совсем понимаю ваш комментарий о «безумно плохой производительности» - как часто вы собираетесь это делать) так или иначе?).