如何在以管理员身份运行的C#代码中重启IIS?

10
通常情况下(在Windows 7中),安装程序会要求修改系统权限。作为管理员,我可以授权而无需提供密码。
我正在尝试弄清楚如何从以管理员身份运行的C#代码中执行管理员操作(重启IIS),但该用户不是“Administrator”帐户。
6个回答

5
要以提升权限的方式运行进程,您可以使用“runas”动词。
Process elevated = new Process();
elevated.StartInfo.Verb = "runas";
elevated.StartInfo.FileName = "Whatever.exe";
elevated.Start();

如果需要重启IIS(如之前所提到的),请使用iisreset命令。

希望您会觉得这个信息有用。


在命令提示符中,当我键入“runas /user: Administrator iisreset”时,它会要求我输入密码,即使启动命令提示符的用户是管理员。 我不应该需要密码。 - Fantius
我认为runas命令并不完全等同于runas动词。从问题中我推断您想从代码中实现这个功能。 - ZFE

4

对于仍在寻找此功能的人,这是我使用的代码来帮助我完成此操作。

    private static void DoIISReset()
    {
        Process iisReset = new Process();
        iisReset.StartInfo.FileName = "iisreset.exe";
        iisReset.StartInfo.RedirectStandardOutput = true;
        iisReset.StartInfo.UseShellExecute = false;
        iisReset.Start();
        iisReset.WaitForExit();
    }

希望这可以帮助你!

我正在使用文件的完整路径:(@"C:\Windows\System32\iisreset.exe") - Mahmut K.
如何在远程 IIS 上进行此操作? - Adriano Santros

3
System.Diagnostics.Process.Start(@"C:\Windows\System32\iisreset.exe");

这段代码可以帮助您,但是您可能会遇到“拒绝访问”的问题。

为了避免出现“拒绝访问”的情况,请按照以下步骤操作:

  1. 右键单击项目
  2. 添加新项
  3. 添加应用程序清单文件
  4. 更改此部分

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

更改为

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


3

我没有使用AD身份验证,我只是在家用电脑上。但它没有起作用。 - Fantius
1
iisreset.exe -> iisreset.exe - yakya

0

有两种方法可以做到这一点,但是对于两种方法,您都需要以管理员身份运行VS。

  1. 此代码将在空的cmd中提示一段时间,并将自动关闭窗口。

    Process iisReset = new Process(); iisReset.StartInfo.FileName = "iisreset.exe"; iisReset.StartInfo.RedirectStandardOutput = true; iisReset.StartInfo.UseShellExecute = false; iisReset.Start(); iisReset.WaitForExit();

    1. 此代码还将重新启动IIS,并在CMD中提示几个处理过程。

      Process.Start(@"C:\WINDOWS\system32\iisreset.exe", "/noforce");


-1

这并没有回答关于必须使用C#的要求的问题。 - Dave Friedel
@Dave Friedel,最后一个链接有关于如何重启服务的C#示例。因此它回答了问题。 - Nigel Findlater
1
我会取消踩的操作,但是你没有提供重启IIS的具体细节,并且提供了一个与问题无关的远程站点链接。为了给社区提供更有价值的帮助,提供一些伪代码来概述操作会更有用。更新:除非回答被编辑,否则我的投票将被锁定。此外,这还会引导他们遇到其他问题,比如这里的链接:https://dev59.com/kWIj5IYBdhLWcg3w6JHU - Dave Friedel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接