Windows服務程式[解決部分智能自動的需要]

來源:互聯網
上載者:User

在很多應用中需要做windows服務來在後台默默的做一些操作,比如:

1、週期性Database Backup。

2、週期性發送郵件或簡訊。

簡單說就是讓系統在後台默默的定期做一些事情,可能是一直在做,也可能是每隔一段時間做一次。

 

利用VS2008我們能夠在幾分鐘之內建立一個windows服務,非常簡單。

下面說一下步驟

1、建立一個“Windows服務”類型的項目

2、重新命名預設的“Service1” 為你喜歡的名稱。

3、VS預設開啟的是“設計檢視”介面,在空白處右擊選擇“屬性”,將“ServiceName”也換成你喜歡的名字。

       這個名字預設就是系統“服務”中的名稱。

4、從工具箱的組件表當中拖動一個System.Timer對象到這個設計檢視中。

       注意: 要確保是System.Timer控制項,而不是System.Windows.Form.Timer控制項。

       否則是無效的,服務啟動了也不會有任何效果。

       預設情況下,工具箱“組件”中的Timer控制項還恰恰就是System.Windows.Form.Timer,所以一定要注意。

       如果工具箱中沒有System.Timer控制項,那就在工具箱任何位置右擊-“選擇項”-找到System.Timer後添加。

5、設定Timer控制項的屬性“Interval”值為需要的時間,這裡的單位是毫秒,1秒=1000毫秒,自己看著辦。

6、然後雙擊這個Timer控制項,VS自動切換到代碼介面,在這裡寫需要的程式碼完成想做的事情。

7、下面切換到“設計檢視”,在空白處右擊-“添加安裝程式”,系統會自動添加ProjectInstaller組件,並自動會開啟該組件的設計檢視,在該視圖中可以看到兩個控制項:serviceInstaller1和serviceProcessInstaller1。

8、右擊“serviceInstaller1”-“屬性”,設定以下參數:

       ServiceName:預設就是我們在第3步驟中設定的服務名稱,不要修改,預設應該就是對的。

       StartType:服務的啟動類型,可以根據需要設定,真正部署時一般都選擇自動,防止機器重啟服務停止。

       DispalyName:就是服務顯示的易記名稱,相當於暱稱,如果不設定則顯示時預設就是步驟3設定的名字。

       Description:服務的詳細描述,也就是該服務的詳細備忘說明。

9、右擊“serviceProcessInstaller1”-“屬性”,設定以下參數:

       Account:預設是User,但是一般不指定該服務的使用者,而是設定為本地系統服務即“localSystem”。

10、OK,到了這裡我們的開發工作就算完成了,下面就是如何來安裝和部署這個服務。

 

11、可以直接使用“C:\Windows\Microsoft.NET\Framework\v2.0.50727\”內建的InstallUtil.exe命令。

         如:InstallUtil c:\AutoRemindService.exe (卸載就是InstallUtil c:\AutoRemindService.exe -u)

12、也可以打包成獨立的安裝程式,比較適合傻瓜化的安裝,也是最終應該提供的方式。

         打包程式可以是建立的獨立新項目,也可以直接在當前解決方案中添加打包項目,這裡我們就選擇後者。

         下面逐步說明。

 

1、選擇VS菜單“檔案”-“添加”-“建立項目”,在彈出的視窗中選擇“其它項目類型”-“安裝和部署”-“安裝項目”,至於該項目的“名稱”可以隨便寫,“位置”一般預設和主專案放在一起就可以了,不必單獨設定。

2、右擊剛剛添加的“安裝項目”名稱,選擇“添加”-“項目輸出”,在彈出的視窗中選擇需要部署的項目,部署的檔案一般選擇“主輸出”,至於“配置”預設即可。

3、還是右擊剛剛添加的“安裝項目”名稱,選擇“視圖”-“自訂動作”,在開啟的頁面中右擊“自訂動作”選擇“添加自訂動作”,在彈出的視窗中選擇“應用程式檔案夾”裡面的“主輸出來自XXXXXX”後“確定”。

4、還是右擊剛剛添加的“安裝項目”名稱,選擇“視圖”-“使用者介面”,也就是設定安裝過程中的一些參數。

       這個步驟不做也無所謂,但是如果是正規的安裝程式,還是有必要設定顯示一下自己的公司名稱什麼的。

5、右擊要部署的項目“重建”,右擊安裝項目“重建”。

6、找到安裝項目所在目錄,將尾碼名為msi的安裝檔案拷貝出來即可。

 

 

 

最後需要注意的是:

如果你修改了這個服務,路徑沒有變化的話是不需要重新註冊服務的。

如果路徑發生了變化,要先卸載這個服務InstallUtil.exe /u參數,然後再重新安裝這個服務,不能直接安裝。還有就是windows服務是沒有介面的,不要企圖用控制的輸出方式來輸出一些訊息,你只能添加一個EventLog,通過WriteEntry()來寫日誌。

設定快顯視窗也會被攔截,如果設定了該服務“允許服務與案頭互動”也還是以提醒方式經允許後才顯示。

實際上這本來就是後台默默啟動並執行服務,為何還要互動呢?

如果僅是要服務給你什麼資訊,那麼可以讓服務自動在某地方寫檔案或發郵件給你。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.