Member 10579252 Ответов: 2

Выключение системы из другой системы, подключенной к той же локальной сети


Что мне нужно, так это
1: Создать окно обслуживания
2: развертывание на всех локальных компьютерах

после этого
1: Создайте приложение в winforms
2: вызовите метод обслуживания windows и выключите этот компьютер

возможно ли это ? или любое рекомендуемое решение?
-> LAN Pc имеет Одноранговое соединение

Что я уже пробовал:

Я пробовал область управления
Включен WMI во всех локальных ПК
но я получил исключение в управлении.scope.connect();

вот код который я пробовал
Process.Start("shutdown","-s -m \\ComputerName or IP");

также пробовать
ManagementScope scope = new ManagementScope(
          "\\\\" + computerName +  "\\root\\CIMV2", options);
        scope.Connect();

Mehdi Gholam

Попробуйте запустить его от имени администратора целевой машины или, если у вас есть домен, от имени учетной записи администратора домена.

Member 10579252

Я уже упоминал его одноранговую , а не доменную серверную архитектуру.

2 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Один из методов, который я использовал, - локальное завершение работы: создайте файл .bat на целевых машинах, который будет выполнять завершение работы. Вы можете запустить этот файл, и завершение работы будет выполнено локально. Это, конечно, предполагает, что у вас есть механизм для установки файла на их машину.

(По крайней мере, раньше это работало)


Рейтинг:
1

phil.o

Не находясь в домене, вы все равно должны предоставить учетные данные учетной записи администратора на целевой машине, что имеет смысл, потому что никто не хочет, чтобы кто-то мог выключить свой компьютер без их согласия.
Для этого вы можете подключиться к общему ресурсу IPC$ hidden на целевом компьютере:

net use \\TARGETCOMPUTER\IPC$ adminpassword /user:targetcomputer\admminaccountname

Отсюда вы сможете выполнить команду shutdown:
shutdown -m \\TARGETCOMPUTER

Это должно сработать.
Любезно.

Edit: вам не нужно писать и развертывать службу для этого, вы можете выполнять эти команды непосредственно из вашего приложения. Windows уже имеет все необходимые службы для вашего требования.


Member 10579252

не сработало...

phil.o

Я только что проверил его дома, он отлично работает.
adminaccountname должно быть записано в виде targetcomputer\adminaccountname
Я изменил решение соответствующим образом.

Dave Kreskowiak

Если у вас нет учетной записи администратора на удаленной машине, вы не можете аутентифицироваться на ней и сообщить ей о завершении работы. Вам нужно будет использовать учетную запись администратора, специфичную для каждой удаленной рабочей станции!

Учетная запись администратора на вашем компьютере не будет работать для выполнения чего-либо на удаленной машине.

Кроме того, "не работает" - это не описание проблемы. Вы получаете какие-либо коды ошибок или сообщения? Если да, то при выполнении какой команды?