Я использую следующий фрагмент кода для выполнения IISReset на удаленных серверах с помощью веб-приложения Asp.Net. Веб-сайт размещен на компьютере с Windows Server 2003 с IIS 6.0, а удаленные серверы также работают под управлением Windows Server 2003 (IIS 6.0). Этот код работает абсолютно нормально в моей среде разработки и успешно выполняет сброс IIS на удаленных серверах, но когда я развернул его на живом сервере, он ничего не делает. Приложение практически не отвечает, когда я нажимаю кнопку, чтобы сбросить IIS на веб-странице и генерирую следующую ошибку в журнале событий .:
* Всплывающее окно приложения: iisreset.exe - Ошибка приложения: приложение не удалось правильно инициализировать (0xc0000142). Нажмите OK, чтобы закрыть приложение. *
string pass = CommonMethods.GetSecureAppSettings("priviledgedUserPwd");
ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.UserName = CommonMethods.GetSecureAppSettings("priviledgedUser");
psi.Password = pass.ToSecureString();
psi.FileName = @CommonMethods.GetAppSettings("ExecutablePath") + "iisreset.exe";
psi.WindowStyle = ProcessWindowStyle.Normal;
psi.Arguments = server.IP;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
System.Diagnostics.Process listFiles;
listFiles = Process.Start(psi);
StreamReader outPut = listFiles.StandardOutput;
listFiles.WaitForExit(10000);
if (listFiles.HasExited)
{
Logger.Audit(AUDIT_TITLE, outPut.ReadToEnd());
}
else
{
throw new Exception("Failed to start the process successfully");
}
return listFiles.ExitCode;
Здесь путь к исполняемому файлу - C: \ Windows \ System32, а привилегированный пользователь является членом группы администраторов, поэтому все разрешения уже имеются. Я также пытался подражать без посторонней помощи.
Пожалуйста, предложите, как исследовать эту проблему дальше.
Большое спасибо заранее.