Завершение работы или перезагрузка компьютера в C# и ASP.NET
Я хочу иметь возможность завершить работу или перезапустить сервер, на котором запущено мое приложение ASP.NET. Следующий код прекрасно работает в режиме отладки:
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "shutdown";
startInfo.Arguments = "/r /f /t 0";
startInfo.UseShellExecute = true;
startInfo.Verb = "runas";
process.StartInfo = startInfo;
process.Start();
Я также пробовал этот код, но я получаю следующую ошибку "Объект Process должен иметь для свойства UseShellExecute значение false, чтобы запустить процесс как пользователь":
var info = new ProcessStartInfo("shutdown.exe", "/r /t 0");
info.UserName = "administrator";
//A not-so-secure use of SecureString
var secureString = new SecureString();
var password = "password";
foreach (var letter in password)
{
secureString.AppendChar(letter);
}
info.Password = secureString;
var restart = new Process();
restart.StartInfo = info;
restart.Start();
Я добавляю следующее в мой код:
info.UseShellExecute = false;
Затем ошибка "Объект Process должен иметь для свойства UseShellExecute значение false, чтобы запустить процесс как пользователь", но код выполняется как первый блок кода.
Сервер будет перезагружен, когда я выполню код в режиме отладки или если я выполню команду cmd. Однако когда я запускаю приложение на сервере, оно не перезапускается. Я не получаю никакой ошибки, или появляется сообщение о том, что сервер перезагружается или не собирается. Кто-нибудь может сказать мне, пожалуйста, что я делаю не так?
ОБНОВЛЕНИЕ: я добавил try-catch
и приложение никогда не выдает исключение. Однако, когда я посмотрел журналы событий, я обнаружил событие ошибки приложения 1000 для shutdown.exe
1 ответ
Учетная запись, под которой работает ваш пул приложений, не имеет достаточных прав для перезагрузки системы, поэтому этого не происходит.
Вы можете изменить это, войдя на сервер и впоследствии перейдя к Control Panel > Administrative Tools > Local Security Policy
, расширяя Security Settings > Local Policies > User Rights Assignment
узел и собирается в Shut down the system
установка. Добавьте учетную запись пула приложений (или ее родительскую группу, если у вас есть группа для этого) в этот список.