Добрый день

Немного предыстории, чтобы сказать, что у меня нет злонамеренных намерений с моим вопросом: я занимаюсь автоматизацией своего дома и добился хорошего прогресса: несколько десятков устройств можно программно включать и выключать с любого ПК в доме, используя мое приложение VB6 (и там другие функции, такие как блокировка устройства для предотвращения его отключения).

Теперь следующим шагом является реализация саморазвитого скриптового языка для автоматизации последовательных задач. Язык определяет программы в папках задач. Например, одна из таких программ, называемая "Спокойной ночи", имеет задачу выключить все "не жизненно важные" машины на ночь.

Но как бы я ни старался, мне кажется, что я не могу заставить компьютер в локальной сети корректно завершить работу (т. Е. Выключить его или, что еще лучше, перевести его в спящий режим). Конечно, я могу забрать питание ПК, но хорошо ...

Выключение /s /m \\ComputerName кажется естественным выбором, но якобы он не работает на удаленном компьютере после Windows XP. Это, конечно, не работает в моей среде Windows 8.1: оно заканчивается «Доступ запрещен (5)». Запуск cmd от имени администратора не дает мне желаемого доступа.

Как я могу достичь своей цели через оболочку? (Или VB6, конечно, но когда это возможно через оболочку, я должен управлять и в VB6.)

Заранее спасибо!

2 ответа2

1

Команда выключения работает, но вам нужно включить ее на целевом компьютере. Поэтому поищите в Интернете "политику фильтра токенов удаленного отключения".

Во-вторых, вам нужно пройти аутентификацию на удаленном компьютере, чтобы иметь возможность выполнить вскрытие. Команда shutdown не предоставляет функции для передачи учетных данных для входа в систему, поэтому вам необходимо отправить их другим способом перед завершением работы. Я предлагаю вам подключить сетевой диск для этой цели. Хорошо работает для меня. Вам не нужно создавать сетевой ресурс на цели только для этого, вместо этого используйте IPC $.

Обратите внимание: вам нужно войти в систему с учетными данными целевого компьютера! Местные права на эти полномочия не имеют значения; целевой пользователь может даже не существовать локально. И целевой пользователь должен иметь достаточные привилегии, чтобы завершить работу цели.

0

Существует три способа удаленного запуска команд Windows.

  1. Используйте PSExec от Sysinternals

  2. Используйте WMI для запуска удаленных команд

  3. Используйте ControlUp для запуска удаленных команд

Вы можете найти подробную информацию здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .