C# windows服务知识集锦

最近公司项目,本人也是刚接触windows服务,现在把这两天上网学习的一些资料拿出来与大家分享。

1)、关于windows服务安装包的制作和自动启动服务

http://blog.csdn.net/rechan/article/details/7451638

http://www.cnblogs.com/hb_cattle/archive/2011/12/04/2275319.html

http://www.cnblogs.com/yangbingqi/archive/2011/08/09/2132166.html

http://www.cnblogs.com/JemBai/archive/2009/04/30/1446696.html

2)、关于windows服务如是进行调试。

http://www.cnblogs.com/qfb620/archive/2008/12/17/1356994.html

实际上,我们可以直接在OnStart()方法中通过EventLog.WriteEntry("Hi,I'm wiseman");来向事件查看器中写入一些你感兴趣的信息,很大程度上可以解决debug的问题.

3)、关于win7系统上安装问题需要注意的问题。

http://blog.csdn.net/dragonpeng2008/article/details/6653004

http://q.cnblogs.com/q/23328/

http://home.cnblogs.com/wz/

添加应用程序清单文件 app.manifest     只要把 asInvoker替换成requireAdministrator,我们的程序就会默认要求管理员权限运行了

特别注意,在运行vs Cmd工具的时候,一定要以管理员的身份运行,否则注册installutil命令将不会执行。

4)、在ProjectInstaller服务安装类中想通过App.config配置文件来动态读取Service1的Description和DisplayName和ServiceName和StartType信息时异常原因。


关于windwos服务,ProjectInstaller服务安装类中InitializeComponent方法是读取不到App.config文件的!!!

个人是这样理解的认为windwos服务应用程序是有系统sys32运行调用的,所以需要修改到安装服务进程所在的目录。

string   strPath   = Assembly.GetCallingAssembly().Location;

或者string   strPath   = Environment.CurrentDirectory

Service1服务类中,完全可以用ConfigurationSettings.AppSettings["test"]或者ConfigurationManager.AppSettings["test"]方法来获取。

5)、windows服务调试小技巧。

可以叫错误信息输出到事件日志查看器中

EventLog eventLog =new EventLog("Application",

ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
//写入事件日志 
eventLog.WriteEntry(messageText, LogEntryType);

原文地址:https://www.cnblogs.com/swarb/p/9924304.html