用C# 2005 写了个简单的windows服务
注册必须要自己手动的执行 installutil 注册安装服务高分求教 如何在程序里实现windows服务的自动注册?
(做了个安装包,安装时提示无法从命令行或调试器启动服务,必须首先安装windows服务,使用installtil.exe)
注册必须要自己手动的执行 installutil 注册安装服务高分求教 如何在程序里实现windows服务的自动注册?
(做了个安装包,安装时提示无法从命令行或调试器启动服务,必须首先安装windows服务,使用installtil.exe)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
if (args.Length > 0)
{
AssemblyInstaller myAssemblyInstaller;
myAssemblyInstaller = new AssemblyInstaller();
myAssemblyInstaller.UseNewContext = true;
myAssemblyInstaller.Path = System.AppDomain.CurrentDomain.BaseDirectory + "\\" + System.AppDomain.CurrentDomain.FriendlyName;
Hashtable mySavedState = new Hashtable();
switch (args[0].ToLower())
{
case "-i":
myAssemblyInstaller.Install(mySavedState);
myAssemblyInstaller.Commit(mySavedState);
myAssemblyInstaller.Dispose();
return;
case "-u":
myAssemblyInstaller.CommandLine = new string[1] { "/u" };
myAssemblyInstaller.Uninstall(null);
myAssemblyInstaller.Dispose();
return;
default:
System.Console.WriteLine("-i 安装服务!");
System.Console.WriteLine("-u 卸载服务!");
System.Console.ReadKey();
return; }
}
else
{
try
{
ServiceBase ServicesToRun = new QYTService();
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
LogEvent.Error("发现未处理异常!", string.Format("异常消息:\n{0}", ex.ToString()));
}
}
}你看看这段代码就知道了!
myAssemblyInstaller = new AssemblyInstaller();
myAssemblyInstaller.UseNewContext = true;
myAssemblyInstaller.Path = System.AppDomain.CurrentDomain.BaseDirectory + "\\" + System.AppDomain.CurrentDomain.FriendlyName;//这是你要安装的服务程序的路径名。
Hashtable mySavedState = new Hashtable();
myAssemblyInstaller.Install(mySavedState);//开始安装。
myAssemblyInstaller.Commit(mySavedState);//提交安装。
myAssemblyInstaller.Dispose();
2. 有特殊需要的,使用API函数,DLLIMPORT导入包装,虽然代码很长,但是实用。