-
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);
}- 已移动Sheng Jiang 蒋晟MVP, 版主2009年5月27日 16:47服务编程问题 ([Loc]From:Visual C#)
答案
-
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。等错误!