VS2013建立Windows服務 || VS2015+Windows服務簡易教程

轉自:
https://www.cnblogs.com/no27/p/4849123.html
https://blog.csdn.net/ly416/article/details/78860522html

 

VS2013建立Windows服務

1、建立服務數據庫

一、文件-》新建-》項目-》windows桌面-》windows服務,修改你要的項目名稱。我這不更名,仍叫WindowsService1,肯定。windows

二、其中的Program.cs文件是入口,Service1.cs是服務文件,全部的邏輯都在這。Service1.cs包含兩部分,一部分是Designer,能夠在這裏面添加各類組件。一部分是後臺文件,裏面能夠寫一些邏輯,默認包含3個方法:構造函數、OnStart和OnStop,還能夠添加OnPause和OnContinue方法。ide

三、修改Service1.cs文件以下(能夠自行添加一些邏輯代碼)函數

複製代碼
namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
            base.ServiceName = "KangryTest"; //設置服務名稱,與後面的安裝服務名稱要一致 
        }

        protected override void OnStart(string[] args)
        {
            //服務啓動時相關代碼。
        }

        protected override void OnStop()
        {
            //服務關閉時相關代碼。
        }
    }
}
複製代碼

四、雙擊Service1.cs文件,進入設計頁面,對着空白處右鍵-》添加安裝器。post

五、在安裝器的設計界面,出現兩個組件。點擊serviceProcessInstaller1,在右下角的屬性欄中,將Account修改成LocalSystemthis

 

六、選中ServiceInstaller1,右下角的屬性框中,將ServiceName修改爲第3步的ServiceName,其餘自行選擇。DelayedAutoStart表示開機後是否延遲啓動。Description表示服務的描述,DisplayName表示服務顯示名稱。ServicesDependedOn表示依賴的服務項。StartType表示啓動類型,分爲自動啓動,手動啓動和禁用。spa

2、安裝服務.net

選中項目右鍵選擇「生成」,生成exe文件;設計

而後將從C:\Windows\Microsoft.NET\Framework\v4.0.30319中拷貝installutil.exe文件到生成目錄(bin/Debug目的使installutil.exe和dp0WindowsService1.exe在同一級目錄)下。在該目錄新建「安裝.bat」文件,使用記事本打開,輸入以下命令:

%~dp0InstallUtil.exe %~dp0WindowsService1.exe
pause

注意前每一個命令前要加一個%~dp0,表示將目錄更改成當前目錄。假若不加,可能會出錯。pause 必定要換行,不然報錯。

最後雙擊安裝.bat文件,就完成服務註冊了。

在個人電腦上右鍵選擇「管理」,打開「服務和應用程序」下的「服務」,就能看到咱們註冊的服務了。

3、卸載服務

在該目錄新建「卸載.bat」文件,使用記事本打開,輸入以下命令:

%~dp0InstallUtil /u %~dp0WindowsService1.exe

pause

一樣pause也要換行。

若是在啓動過程當中遇到以下問題,請將整個項目加上EVERYONE權限。

4、調試

在VS2013中選擇「調試」-「附加到進程」,以下:

這樣就能夠調試了。

 

 

VS2015+Windows服務簡易教程

一、新建windows服務項目,我這裏選擇的是Framework4.0,沒有選擇高版本是爲了防止在服務在一些低版本系統上沒法正常運行。

二、添加Windows服務的安裝程序。

在默認Service1設計器界面空白處點擊右鍵->添加安裝程序,系統會自動新建一個帶有默認配置的安裝程序類,以下圖:

新建完安裝程序後,須要給默認的serviceInstaller1和serviceProcessInstaller1作一些基本的屬性設置。以下圖:

以上工做完成,安裝程序配置完畢。

注意:若是不給服務添加安裝程序,後面是無法把服務安裝至windows系統裏的。

 三、添加應用程序配置文件(若是有須要的話)。

若是項目有須要,一些應用程序的配置參數能夠設置在此文件裏(例如:數據庫鏈接字符串)。

 四、編寫windows服務主代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Diagnostics;
using  System.Linq;
using  System.ServiceProcess;
using  System.Text;
 
using  System.IO;
 
namespace  OrganizClientSocketService
{
     public  partial  class  Service1 : ServiceBase
     {
         public  Service1()
         {
             InitializeComponent();
 
             System.Timers.Timer timer =  new  System.Timers.Timer();
             timer.Elapsed +=  new  System.Timers.ElapsedEventHandler(TimedEvent);
             timer.Interval = 5000; //每5秒執行一次
             timer.Enabled =  true ;
         }
 
         //定時執行事件
         private  void  TimedEvent( object  sender, System.Timers.ElapsedEventArgs e)
         {
             //業務邏輯代碼
         }
 
         protected  override  void  OnStart( string [] args)
         {
             this .WriteLog( "搜才Organiz客戶端數據同步服務:【服務啓動】" );
         }
 
         protected  override  void  OnStop()
         {
             this .WriteLog( "搜才Organiz客戶端數據同步服務:【服務中止】" );
         }
         protected  override  void  OnShutdown()
         {
             this .WriteLog( "搜才Organiz客戶端數據同步服務:【計算機關閉】" );
         }
 
         #region 記錄日誌
         /// <summary>
         /// 記錄日誌
         /// </summary>
         /// <param name="msg"></param>
         private  void  WriteLog( string  msg)
         {
 
             //string path = @"C:\log.txt";
 
             //該日誌文件會存在windows服務程序目錄下
             string  path = AppDomain.CurrentDomain.BaseDirectory +  "\\log.txt" ;
             FileInfo file =  new  FileInfo(path);
             if  (!file.Exists)
             {
                 FileStream fs;
                 fs = File.Create(path);
                 fs.Close();
             }
 
             using  (FileStream fs =  new  FileStream(path, FileMode.Append, FileAccess.Write))
             {
                 using  (StreamWriter sw =  new  StreamWriter(fs))
                 {
                     sw.WriteLine(DateTime.Now.ToString() +  "   "  + msg);
                 }
             }
         }
         #endregion
     }
}

五、編譯生成,安裝windows服務至Windows系統。

    完成開發後,對整各項目進行編譯生成。在windows服務開發文件夾「\bin\Debug」下,就是咱們須要安裝的服務,建議把裏面的全部文件拷貝至系統裏的某個目錄進行安裝。

  我是把整個個文件夾裏的文件拷貝到c:\WindowService文件夾下。而後打開目錄C:\Windows\Microsoft.NET\Framework64\v4.0.30319,拷貝里面的InstallUtil.exe文件至c:\WindowService文件夾下)。

  注意:個人系統是windows10,64位系統,個人服務也將安裝至64位系統下,因此我是進入C:\Windows\Microsoft.NET\Framework64\v4.0.30319目錄拷貝InstallUtil.exe文件。各位安裝的時候,根據你安裝的目標系統,來以爲是拷貝哪一個framework哪一個版本,具體是64位的仍是32位的也由你係統決定。

  作好以上工做後就能夠安裝了,打開cdm就可執行安裝了(必定要以管理員身份運行喲,要否則安裝時會報「Windows服務安裝異常:System.Security.SecurityException: 未找到源,但未能搜索某些或所有事件」)

  如下是安裝命令、啓動服務命令、中止服務命令、卸載服務命令:

    安裝命令:C:\WindowService\InstallUtil.exe C:\WindowService\OrganizClientSocketService.exe 

    啓動服務命令:net start 搜才Organiz客戶端數據同步服務

    關閉服務命令:net stop 搜才Organiz客戶端數據同步服務

    卸載服務命令:C:\WindowService\InstallUtil.exe -u C:\WindowService\OrganizClientSocketService.exe

相關文章
相關標籤/搜索