2013-09-30 119 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 
相关问题