如何在安装时自动允许我的服务与桌面交互?

时间:2009-02-12 16:59:47

标签: .net windows-services permissions installutil

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

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或其他一些批处理脚本?无论如何我都会使用批处理脚本,所以要么很好。

1 个答案:

答案 0 :(得分:4)

找出答案,非常感谢以下网页,我完全赞同。

link text

这是我的解决方案,只需根据需要更改您的服务名称。将其放入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);
    }
}

}