我写了一个网站 然后网站里面去调用一个exe程序,这个exe程序用来关闭iis服务。
exe中关闭服务代码如下
ServiceController sc = new ServiceController("iisadmin");
            if(sc.Status == ServiceControllerStatus.Running)
             {
                sc.Stop();
            }
我如果不发布网站只是自己用vs运行调试的话可以关闭,但是把网站发布后,能调到exe
但是报如下错误:
无法打开计算机“.”上的 iisadmin 服务。
ServiceHandle “sc.ServiceHandle”引发了“System.InvalidOperationException”类型的异常 System.Runtime.InteropServices.SafeHandle {System.InvalidOperationException}

解决方案 »

  1.   

    关注一下,不过我是用IIS 打开本地自己写的一个windows服务时候报
    “System.InvalidOperationException: 无法打开计算机“.”上的 XXX 服务。
    System.ComponentModel.Win32Exception: 拒绝访问"的错误,
    win7的权限挺BC的!
    ???
      

  2.   

    有可能是权限不够吧,猜的,一般发布到iis后就以匿名用户身份登录,这个用户权限有限啊。
    你在本地调试用的管理员,当然可以关闭。我有一点很好奇,楼主在网站程序里调用关闭iis服务,真是太有意思了,就好像让别人来杀自己,关注。
      

  3.   

    估计是权限不够。asp.net运行在network service账户下。
      

  4.   

    iis是匿名帐号,没有权限。你可以在web.config里模拟一个有权限的帐号,或者更改iis的匿名帐号,设置一个权限大的账户
      

  5.   

    我试了几个解决方法:
    1、在调用windows service之前我用 System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();返回的是应用程序池的名称,
    估计是要提升这个应用程序池的权限
    在C:\inetpub\temp\appPools下面找到对应应用程序池的配置文件,是个XML文件,但是不会配啊2、配置<identity impersonate="true" username="" password=""/>
    使用管理员用户名和密码但是还不行,难道要提升network service的权限吗?那不太不安全了??期待高见?
      

  6.   

    应用程序池->对应的程序池上右键->高级设置->进程模块_标识->选择可以执行操作WINDOWS服务的账户
      

  7.   

    一般控制服务都要配置这个
    <identity impersonate="true" username="" password=""/>
      

  8.   

    我找到解决方法了,win7下只需以管理员身份运行即可!!!!!