2013-09-30 174 views
1

我需要從C#/ .NET應用程序重新啓動IIS。這似乎是一個微不足道的問題,但迄今爲止我還沒有取得成功,並且this question的答案都沒有奏效。以編程方式重新啓動IIS

我是機器上的本地管理員。

我已經試過這樣:

var process = new Process 
{ 
    StartInfo = 
    { 
     Verb = "runas", 
     WorkingDirectory = @"C:\Windows\System32\", 
     FileName = @"issreset.exe" 
    } 
}; 
process.Start(); 

但這將引發Win32Exception - cannot find the file specified.我也試圖把整個路徑FileName,並使用UseShellExecute但所有方法都幫助的各種組合。

我也試着通過命令行調用它:

var process = new Process 
{ 
    StartInfo = 
    { 
     Verb = "runas", 
     WindowStyle = ProcessWindowStyle.Hidden, 
     FileName = @"cmd.exe", 
     Arguments = "/C iisreset" 
    } 
}; 
process.Start(); 

和工作原理,但它提供了一個UAC提示,我不能因爲這個應用程序將無需用戶干預的情況下運行。

還有什麼我可以嘗試嗎?

+0

我想你想'iisreset.exe',不'iisreset'。您需要文件擴展名。 –

+0

你說得對。這是我寫這個問題時的一個錯字。我已經嘗試過了。 – MgSam

+2

如果您將UseShellExecute設置爲true,則第一個將會工作。否則,'FileName'必須是完整的路徑。有沒有辦法繞過UAC,這是點。您可以在該機器上關閉它。 – cadrell0

回答

1

您遇到的異常很可能是由於您嘗試運行此應用程序的用戶沒有管理權限。

如果以管理員帳戶運行應用程序,則應該自動啓動具有管理權限的iisreset,而不會出現UAC提示或錯誤。

如何以管理員身份運行流程是一個單獨的問題。最常見的方式是創建一個應用程序清單:

http://msdn.microsoft.com/en-us/library/ms235229.aspx

+0

特權最終成了這裏的問題。謝謝。 – MgSam

1

或者(和更清潔的),你可以只使用ServiceController類隨後停止和啓動IIS服務。
儘管......你可能仍然需要提升特權......模仿可能會解決這個問題; 「impersonate an account with higher privileges.」用於重新啓動服務。

如何啓動/停止(並重新啓動)Windows服務可以在這裏找到一個很好的例子: Start, Stop and Restart Windows Service (C#)

+0

IIS服務的名稱是什麼?我在Windows 8的任務管理器 - >服務選項卡中看不到它。 – Zack

+0

我發現它是來自此博客文章的「w3svc」http://mphokazito.wordpress.com/2011/02/07/how-to-重新啓動-IIS-使用-C / – Zack

2

FileName是錯誤的。嘗試FileName = @"iisreset.exe"

1

在Solution Explorer - > Add - > New Item-> Appliaction Manifest File中右鍵單擊項目名稱。

在其編輯

<requestedPrivileges> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
    </requestedPrivileges> 

這應該解決您的問題。

0

另一個選項來啓動IIS:

string serviceName = "W3SVC"; //W3SVC refers to IIS service 
ServiceController service = new ServiceController(serviceName); 
service.Start(); 
service.WaitForStatus(ServiceControllerStatus.Running);// Wait till the service started and is running 
相關問題