15

我正在使用 C# 代码来启动和停止窗口服务,但出现此错误。

System.ComponentModel.Win32Exception: Access is denied

我的代码:

 public void StartService(string serviceName, int timeoutMilliseconds)
    {
        ServiceController service = new ServiceController(serviceName);
        try
        {
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            service.Start();
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);
            lblMessage.Text = "Service Started.";
        }
        catch (Exception ex)
        {
            //lblMessage.Text = "Error in Service Starting.";
            lblMessage.Text = ex.ToString();
        }
    }
4

2 回答 2

16

确保您的服务器上的应用程序池身份帐户有权启动该服务。它可以在您的 ASP.NET 开发服务器上运行,因为它在您的用户帐户 (admin) 下运行。在默认的 IIS 配置中,此帐户是网络服务或 ApplicationPoolIdentity(取决于 IIS 版本),并且通常无法管理服务。

因此,在 IIS 管理器中更改池帐户(应用程序池/NameOfYourYourPool/高级设置)。您可以使用内置帐户或使用您的域之一。

应用程序池

于 2013-01-08T13:00:05.820 回答
4

在管理员模式下运行你的 VS 并加载你的项目。在管理员模式下打开开发人员 VS cmd。给正确的用户名和计算机域名,如 domainname\username。希望它能正常工作。

于 2018-01-16T07:16:41.707 回答