我有一个windows服务TestServices 并且设置为“允许服务与桌面交互” 我想在asp.net中启动这个服务,所以写如下代码private System.ServiceProcess.ServiceController sc = new ServiceController("TestServices",".");
protected void Button1_Click(object sender, EventArgs e)
    {
        if (sc.Status == ServiceControllerStatus.Stopped)
            sc.Start();
    }可是一点启动按钮就报错[Win32Exception (0x80004005): 拒绝访问。][InvalidOperationException: 无法打开计算机“.”上的 TestServices 服务。]
   System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess) +171
   System.ServiceProcess.ServiceController.Start(String[] args) +119
   System.ServiceProcess.ServiceController.Start() +23
   _Default.Button1_Click(Object sender, EventArgs e) in d:\Documents and Settings\Administrator\my documents\visual studio 2005\websites\website4\Default.aspx.cs:27
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102如何解决?

解决方案 »

  1.   

    运行ASP.net的账号权限不足吧? 猜测的,你改一下试试
      

  2.   

    shalen520(Love will keep us alive) 
    怎么加管理员权限?
      

  3.   

    把运行ASP.net的账号加到管理员组,不过这样做很危险 另外可以试着在服务的属性页中将windows服务的登陆帐户设置为asp.net帐户,没实际试过
      

  4.   

    我windows登录用户是administrator  另外我把aspnet用户  和 IUSR_机器名(匿名当问internet的帐户)都加到管理员组了还是不行,仍然是这个错误
      

  5.   

    to 我windows登录用户是administrator 另外我把aspnet用户 和 IUSR_机器名(匿名当问internet的帐户)都加到管理员组了还是不行,仍然是这个错误虽说已作了这些修改,但是在机器的安全性设置中,你的IUser用户是无法操纵service。
      

  6.   

    比较简单的方法是,输入administrator用户和密码,然后用wmi来控制service的运行。
      

  7.   

    关于学习一下,以前还没试过用ASP.NET的代码来控制呢,呵呵,不知道这个能不能运用到远程控制上呢?
      

  8.   

    可以通过模拟来赋予权限,不应该直接使用asp.net帐户来操作service<identity impersonate="true" userName="" password=""/>为了增强安全性,标识部分支持在注册表中存储加密的 userName 和 password 属性:userName="registry:HKLM\Software\AspNetIdentity,Name"
    password="registry:HKLM\Software\AspNetIdentity,Password"
      

  9.   

    1.使用身份模拟获取操作权限。
    Web.config相关部分示例: <system.web>
     <machineKey
            validationKey= "250B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
            decryptionKey= "1A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
            validation="SHA1"        
        />
        <identity impersonate="true" userName="DomainWeb\ASPNETOwner" password="Password"/>
        
        <httpRuntime maxRequestLength="10240"  useFullyQualifiedRedirectUrl="true" appRequestQueueLimit="500" executionTimeout="100"/>
    </system.web>
    2.通过wmi或SerivceControl来控制服务。
    http://blog.csdn.net/zhzuo/archive/2004/03/29/22025.aspx