Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式重新启动IIS_C#_.net_Iis_Process_Uac - Fatal编程技术网

C# 以编程方式重新启动IIS

C# 以编程方式重新启动IIS,c#,.net,iis,process,uac,C#,.net,Iis,Process,Uac,我需要从C#/.NET应用程序重新启动IIS。这似乎是一个微不足道的问题,但到目前为止,我还没有取得成功,而且我的答案都不起作用 我是计算机上的本地管理员 我试过这个: var process = new Process { StartInfo = { Verb = "runas", WorkingDirectory = @"C:\Windows\System32\", FileName = @"issreset.exe" } }; p

我需要从C#/.NET应用程序重新启动IIS。这似乎是一个微不足道的问题,但到目前为止,我还没有取得成功,而且我的答案都不起作用

我是计算机上的本地管理员

我试过这个:

var process = new Process
{
   StartInfo =
   {
       Verb = "runas",
       WorkingDirectory = @"C:\Windows\System32\",
       FileName = @"issreset.exe"
   }
};
process.Start();
但这会引发一个
Win32Exception-找不到指定的文件。
我也尝试过将整个路径放入
FileName
和使用
UseShellExecute
的各种组合,但这两个选项都没有帮助

我还尝试通过命令行调用它:

var process = new Process
{
   StartInfo =
   {
       Verb = "runas",
       WindowStyle = ProcessWindowStyle.Hidden,
       FileName = @"cmd.exe",
       Arguments = "/C iisreset"
   }
};
process.Start();
这是可行的,但它给出了UAC提示,我不能这样做,因为这个应用程序将在没有用户干预的情况下运行


还有什么我可以尝试的吗?

您遇到的异常很可能是由于您试图以不具有管理权限的身份运行此应用程序的用户造成的

如果您以管理员帐户的身份运行应用程序,则应用程序将自动以管理员权限启动iisreset,而不会出现UAC提示或错误

作为管理员,您应该如何运行流程是另一个问题。最常见的方法是创建应用程序清单:


您遇到的异常很可能是由于您试图以管理员身份运行此应用程序的用户没有管理权限造成的

如果您以管理员帐户的身份运行应用程序,则应用程序将自动以管理员权限启动iisreset,而不会出现UAC提示或错误

作为管理员,您应该如何运行流程是另一个问题。最常见的方法是创建应用程序清单:

或者(而且更干净),您可以使用
ServiceController
类来停止和启动iis服务。
不过,您可能仍然需要提升权限。。。模仿也许可以解决这个问题;“”用于重新启动服务

有关如何启动/停止(和重新启动)windows服务的示例,请参见:

或者(而且更干净),您可以使用
ServiceController
类来停止和启动iis服务。
不过,您可能仍然需要提升权限。。。模仿也许可以解决这个问题;“”用于重新启动服务

有关如何启动/停止(和重新启动)windows服务的示例,请参见:
文件名错误。请尝试
FileName=@“iisreset.exe”
文件名错误。请尝试在解决方案资源管理器->添加->新建项目->应用程序操作清单文件中右键单击项目名称

在其中编辑

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


这将解决您的问题。

在解决方案资源管理器->添加->新建项目->应用程序清单文件中右键单击项目名称

在其中编辑

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


这将解决您的问题。

启动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

启动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

我想你想要的是
iisreset.exe
,而不是
iisreset
。你需要文件扩展名,没错。那是我写问题时的一个打字错误。我已经试过了。如果您将
UseShellExecute
设置为true,第一个选项将有效。否则,
FileName
必须是完整路径。没有办法绕过UAC,这有点重要。你可以在那台机器上关掉。你的第一段代码对我来说很好。你确定那是你试过的密码吗?你确定安装了IIS并且文件在那里吗?这不会绕过UAC,但它只会提示输入密码:
runas/user:Administrator iisreset
,作为第二个进程的参数。我想你想要的是
iisreset.exe
,而不是
iisreset
。你需要文件扩展名,没错。那是我写问题时的一个打字错误。我已经试过了。如果您将
UseShellExecute
设置为true,第一个选项将有效。否则,
FileName
必须是完整路径。没有办法绕过UAC,这有点重要。你可以在那台机器上关掉。你的第一段代码对我来说很好。你确定那是你试过的密码吗?您确定安装了IIS并且文件在那里吗?这不会绕过UAC,但它只会提示输入密码:
runas/user:Administrator iisreset
,作为第二个进程的参数。这里的问题是权限。谢谢,这里的问题是特权。谢谢。IIS服务的名称是什么?我在Windows8的任务管理器->服务选项卡中没有看到它。我在这篇博文中发现它是“w3svc”。IIS服务的名称是什么?我在Windows8的任务管理器->服务选项卡中没有看到它。我在这篇博文中发现它是“w3svc”