Выключение проблем делает компьютер сети от службы Windows - PullRequest
0 голосов
/ 03 ноября 2010

Я пытаюсь завершить работу удаленного компьютера в сети из службы Windows. Когда я запускаю приведенный ниже код в тестовом приложении, он работает нормально, но при запуске из службы ничего не происходит.

У меня есть ощущение, что это может быть связано с разрешениями, но я не уверен.

У кого-нибудь есть предложения?

Process p = new Process();
p.StartInfo.FileName = "shutdown";
p.StartInfo.Arguments = @"/s /f /m \\pc-name /t 0";
p.Start();

Ответы [ 2 ]

1 голос
/ 03 ноября 2010

Служба обычно работает с другими учетными данными (локальная система, сетевая служба и т. Д.), Отличными от вашего тестового приложения.Вам следует подумать о создании пользователя домена, который имеет соответствующие права, и добавить этого пользователя в вашу службу.

0 голосов
/ 04 ноября 2010

завершение работы завершится неудачно, если учетная запись, в которую вы входите на удаленном ПК, не имеет привилегии SE_SHUTDOWN_NAME .

Эта статья MSDN содержит фрагмент кода, показывающий, как установить привилегию SE_SHUTDOWN_NAME из программы (и как выключить / перезагрузить компьютер с помощью Windows API вместо вызова команды выключения).

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

  1. Запустите secpol.msc , чтобы запустить приложение «Local Security Settings»
  2. Перейти к Параметры безопасности / Локальные политики / Назначение прав пользователя в дереве слева
  3. Справа дважды щелкните Завершение работы системы политика, чтобы открыть ее свойства
  4. Убедитесь, что учетная запись, которая будет вызывать отключение, указана как имеющая эту привилегию

Вам нужно будет сделать это только один раз.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...