1

我有一个由 .NET 2.0 的installutil /i命令安装的 Windows 服务。它使用以下帐户安装服务,并使用密码:

NT AUTHORITY\LocalService

当我运行我的服务时net start <serviceName>,我得到

Error 5: Access Denied

要删除它,我必须打开services.msc并从属性中提供服务

Logon As -> Local System Account
         -> Allow Service to interact with desktop.

我可以将整个“clicky”业务放入本机 .NET C# 代码或 WMI 或其他批处理脚本的代码中吗?无论如何,我都会使用批处理脚本,所以两者都可以。

4

1 回答 1

4

想出了一个答案,非常感谢我给予充分信任的以下网页。

链接文本

这是我的解决方案,只需根据需要更改您的服务名称。将其放入 C# 控制台应用程序并运行它:)

static void Main(string[] args)
{
    string serviceName = "SERVICE_NAME_HERE"; 
    string objPath = string.Format("Win32_Service.Name='{0}'", serviceName);
    using (ManagementObject service = new ManagementObject(new ManagementPath(objPath)))
    {
        object[] wmiParams = new object[11];
        wmiParams[6] = "LocalSystem";
        wmiParams[7] = "";
        service.InvokeMethod("Change", wmiParams);
    }
}

}

于 2009-02-12T18:24:05.907 回答