我希望能夠關閉或重新啓動運行ASP.NET應用程序的服務器。下面的代碼在調試模式下的偉大工程:在C#和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爲了ŧ o以用戶身份啓動進程「消失,但代碼像第一個代碼塊一樣執行
當我在調試模式下執行代碼時,服務器將重新啓動,或者如果我運行的命令是cmd。但是,當我在服務器上運行應用程序時,它不會重新啓動。我沒有收到任何錯誤,或者彈出說服務器正在或不會重新啓動。有人可以告訴我,我做錯了什麼?
更新:我已經添加了一個try-catch
並且該應用程序從不引發異常。但是,當我查找事件日誌時,發現應用程序錯誤事件1000 for shutdown.exe
http://stackoverflow.com/a/8283042/64262 – andleer
學習您的ASP代碼沒有與管理員權限一起運行,難道不難理解嗎? – 2013-10-11 18:21:32
當AppPool在LocalSystem或LocalService帳戶下運行時,可能出現[從ASP.NET應用程序重新啓動服務器]的副本(http://stackoverflow.com/questions/8282987/restart-server-from-asp-net-application-when-apppool -is-ran-under-localsystem-or) – Habib