C#写的服务出现错误:Windows could not start the NLServices sercice on local Computer. Error 1083:The executable programe that thi

  • Windows could not start the NLServices sercice on local Computer.
    Error 1083:The executable programe that this service is configured to run in does not implement the service.

    namespace NLServices
    {
        [RunInstaller(true)]
        public partial class ProjectInstall : Installer
        {
            public ProjectInstall()
            {
                InitializeComponent();

                ServiceProcessInstaller spi = new ServiceProcessInstaller();
                ServiceProcessInstaller spINLSDM = new ServiceProcessInstaller();
                spi.Account = ServiceAccount.LocalSystem;
                spINLSDM.Account = ServiceAccount.LocalSystem;

                ServiceInstaller si = new ServiceInstaller();
                si.DisplayName = "NLServices";
                si.Description = "该服务为检测服务。";
                si.StartType = ServiceStartMode.Automatic;
                si.ServiceName = "NLServices";

                ServiceInstaller spNLSDM = new ServiceInstaller();
                spNLSDM.DisplayName = "NLSMChecker";
                spNLSDM.Description = "检测任务列表,并处理相应的任务.";
                spNLSDM.StartType = ServiceStartMode.Automatic;
                spNLSDM.ServiceName = "NLSMChecker";

                this.Installers.Add(spi);            
                this.Installers.Add(si);
                this.Installers.Add(spINLSDM);
                this.Installers.Add(spNLSDM);
            }
        }
    }

    /// <summary>
            /// The main entry point for the application.
            /// </summary>
            static void Main()
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
       { 
        new NSLSer() ,
                    new NLBuildtskService()
       };
                ServiceBase.Run(ServicesToRun);
          }

答案

  • 2009年5月31日 7:08董文超用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     已答复
    投票认定帖子内容有帮助
    0
    thanks everybody! but,I found the problem on MSDN Library(http://msdn.microsoft.com/zh-cn/library/system.serviceprocess.serviceprocessinstaller(VS.85).aspx).

    public ProjectInstall()
            {
                InitializeComponent();

                ServiceProcessInstaller spi = new ServiceProcessInstaller();
                ServiceProcessInstaller spINLSDM = new ServiceProcessInstaller();
                spi.Account = ServiceAccount.LocalSystem;
                spINLSDM.Account = ServiceAccount.LocalSystem;

                ServiceInstaller si = new ServiceInstaller();
                si.DisplayName = "NLServices";
                si.Description = "该服务为检测服务。";
                si.StartType = ServiceStartMode.Automatic;
                si.ServiceName = "NLServices";

                ServiceInstaller spNLSDM = new ServiceInstaller();
                spNLSDM.DisplayName = "NLSMChecker";
                spNLSDM.Description = "检测任务列表,并处理相应的任务.";
                spNLSDM.StartType = ServiceStartMode.Automatic;
                spNLSDM.ServiceName = "NLSMChecker";

                this.Installers.Add(spi);            
                this.Installers.Add(si);
                this.Installers.Add(spINLSDM);
                this.Installers.Add(spNLSDM);
            }
    在创建Installer的时候,虽然有两个Service需要注册。但是,仅仅需要一个ServiceProcessInstaller 。通过删除一个ServiceProcessInstaller ,该问题解决了。顺便说一下:Service的Account 需要设置为LocalSystem。否则,可能出现Access Denie deny。等错误!

原文地址:https://www.cnblogs.com/netwenchao/p/1525087.html