参考
https://jingyan.baidu.com/article/fa4125acb71a8628ac709226.html
http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html
注意
1、设置服务安装后自动启动
在serviceInstaller1的AfterInstall添加如下代码
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e) { System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController("你设置的服务名"); s.Start(); }
2、windows服务不执行Timer控件的解决办法
Timer timer = new Timer(); public Service1() { InitializeComponent(); timer.Interval = 2000; timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); timer.AutoReset = true;//设置是执行一次(false),还是一直执行(true); timer.Enabled = true; timer.Start(); } void timer_Elapsed(object sender, ElapsedEventArgs e) { File.WriteAllText("D:\\text.txt", DateTime.Now.ToString() + "\r\n"); }
3、设置允许服务与桌面交互方法
让服务启动某个应用程序,就要修改服务的属性,勾选允许服务与桌面交互
#region 设置服务与桌面交互 /// <summary> /// 设置服务与桌面交互,在serviceInstaller1的AfterInstall事件中使用 /// </summary> /// <param name="serviceName">服务名称</param> private void SetServiceDesktopInsteract(string serviceName) { System.Management.ManagementObject wmiService = new System.Management.ManagementObject(string.Format ("Win32_Service.Name='{0}'", serviceName)); System.Management.ManagementBaseObject changeMethod = wmiService.GetMethodParameters("Change"); changeMethod["DesktopInteract"] = true; System.Management.ManagementBaseObject utParam = wmiService.InvokeMethod("Change", changeMethod, null); } #endregion