Windows服务常见问题

1、OnStart()最常见的问题:在OnStart()的执行时间问题,如果超过30秒SCM会武断的认为服务无法启动,所以建议放到线程中执行。

2、调试最痛苦的问题:这个就直接贴上代码,在mian中写入如下代码

        static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;

ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Watcher() };

System.ServiceProcess.ServiceBase.Run(ServicesToRun);
//#region //Console.WriteLine("Console"); //Watcher watcher = new Watcher(); //watcher.OnStart(null); //Console.ReadLine(); //watcher.OnStop(); //watcher.Dispose(); //#endregion }
请好好看看代码,我喜欢注销了来切换调试与发布版的程序,你也可以通过用#if 或者通过输入参数来判断。这个可能比较难,建议新手还是老老实实的注册再运行(我也刚学^_^,但是我不老实)。
 
3、注册服务的问题:用C:\Windows\Microsoft.NET\Framework\v2.0.50727目录下的InstallUtil.exe执行(在命令行中:当前目录=>InstallUtil [-u表示卸载] 服务名.exe)。
如果你想直接安装的话可以搜下windows服务安装,有不用InstallUtil.exe版本的,还图文并茂,这里就不说了。
 
4、功能限制的问题:说起来服务差不多就是木马,反过来也差不多,你看不见摸不着的,呵呵,所以它有好多权限被限制了,不过你完全可以放到别的程序里,然后通过服务控制通信就可以了。
 
5、截屏的问题:哎,第一次编程我就想干坏事,呵呵,然后会报错,但是在控制台是正确的。原因很简单,服务是没有界面的因此跟桌面无关,当然就没法截屏了。
 
6、执行目录的问题:C:\Windows\System32这个是它的执行目录,不是你的程序所在的目录。
 
暂时就这么多,希望用过windows服务的童鞋们,把遇到过的、没遇到过的、已经解决的、没解决的问题都发上来给大家分享^_^,非常感谢
作者:KKcat
    
个人博客:http://jinzhao.me/
    
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/jinzhao/p/1582449.html