1. 程式人生 > >[開發筆記]-WindowsService服務程式開發

[開發筆記]-WindowsService服務程式開發

         Windows服務:Microsoft Windows 服務(即,以前的 NT服務)使您能夠建立在它們自己的 Windows 會話中可長時間執行的可執行應用程式。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何使用者介面。這使服務非常適合在伺服器上使用,或任何時候,為了不影響在同一臺計算機上工作的其他使用者,需要長時間執行功能時使用。還可以在不同於登入使用者的特定使用者帳戶或預設計算機帳戶的安全上下文中執行服務。(摘自百度百科)

一:建立

二:屬性

VS自動建立了一個Service1.cs的檔案:

點選F4,檢視各個屬性的含義:

Autolog                 是否自動寫入系統的日誌檔案

CanHandlePowerEvent     服務時候接受電源事件

CanPauseAndContinue          服務是否接受暫停或繼續執行的請求

CanShutdown 服務是否在執行它的計算機關閉時收到通知,以便能夠呼叫 OnShutDown 過程

CanStop                              服務是否接受停止執行的請求

ServiceName                       服務名稱

三:功能

點選F7檢視Service1.cs的原始碼:

預設實現了OnStart和OnStop兩個方法。

以向一個文字檔案中寫入資料操作為例:

   public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 服務啟動
        /// http://www.cnblogs.com/babycool
        /// </summary>
        /// <param name="args"></param>
        protected
override void OnStart(string[] args) { string start = string.Format("{0}-{1}",DateTime.Now.ToString("yyyyMMddHHmmss"),"程式啟動了。"); Log(start); } /// <summary> /// 服務停止 /// http://www.cnblogs.com/babycool /// </summary> protected override void OnStop() { string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "程式停止了。"); Log(start); } /// <summary> /// 系統關閉 /// http://www.cnblogs.com/babycool /// </summary> protected override void OnShutdown() { string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "電腦關閉了。"); Log(start); } /* /// <summary> /// 服務暫停 /// http://www.cnblogs.com/babycool /// </summary> protected override void OnPause() { } */ /* /// <summary> /// 服務繼續 /// </summary> protected override void OnContinue() { base.OnContinue(); } */ /* /// <summary> /// 系統電源狀態改變 /// </summary> /// <param name="powerStatus"></param> /// <returns></returns> protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus) { return base.OnPowerEvent(powerStatus); } */ void Log(string str) { string path = "E://def/6.txt"; using (StreamWriter sw = File.AppendText(path)) { sw.WriteLine(str); } } }

四:安裝程式

切換到 Service1.cs[設計] 介面,右擊選擇“新增安裝程式”。

這時專案中就添加了一個新類 ProjectInstaller 和兩個安裝元件 ServiceProcessInstaller 和 ServiceInstaller。

選中“serviceInstaller1” 控制元件,F4開啟屬性面板,

Description       服務程式的描述資訊

DisplayName     服務程式顯示的名稱

StartType        指定如何啟動服務      

                    Manual      服務安裝後,必須手動啟動

                    Automatic    每次計算機重新啟動時,服務都會自動啟動

                    Disabled     服務無法啟動

選中“serviceProcessInstaller1” 控制元件,F4開啟屬性面板:

將serviceProcessInstaller類的Account屬性改為 LocalSystem

這樣,不論是以哪個使用者登入的系統,服務總會啟動。

五:生成

右擊 專案 選擇生成 ,不能通過F5來直接執行服務專案。

六:安裝解除安裝服務

選擇 VS元件 “Visual Studio命令提示(2010)” 工具,並以“管理員身份執行"(win7、win8系統下)。

注意:這裡必須選擇“以管理員身份執行”,否則會報錯。

  

從命令列執行 Installutil.exe 目錄  命令,以專案中的已編譯可執行檔案所在的目錄作為引數,安裝服務:

因為Installutil.exe程式預設在Windows\System32\目錄下,需要通過cmd命令 "cd" 切換目錄。

從命令列執行 Installutil.exe /u 目錄   命令來解除安裝服務:

安裝服務:
installutil.exe E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe

解除安裝服務:
installutil.exe /u E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe

七:檢視服務狀態

在“計算機管理”中,服務 下可以看到剛剛安裝的Service服務(cmd命令:services.msc---本地服務設定):

預設是停止狀態。右擊,選擇“啟動”,即可開啟服務。

通過“屬性”,可以檢視到更詳細的資訊。

轉載請註明出處。

相關參考:

相關推薦

[開發筆記]-WindowsService服務程式開發

         Windows服務:Microsoft Windows 服務(即,以前的 NT服務)使您能夠建立在它們自己的 Windows 會話中可長時間執行的可執行應用程式。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何使用者介面。這使服務非常適合在伺服器上使用,或任何時候,為了不

WindowsService服務程式開發

 Windows服務:Microsoft Windows 服務(即,以前的 NT服務)使您能夠建立在它們自己的 Windows 會話中可長時間執行的可執行應用程式。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何使用者介面。這使服務非常適合在伺服器上使

WindowsService服務程式開發 安裝和解除安裝

安裝服務:installutil.exe E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe 解除安裝服務:installutil.exe /u E:\XTestDemo\X_15_WindowsService\bin\Debu

服務計算——開發簡單 web 服務程式 cloudgo

文章目錄 服務計算——cloudgo 1. 基本任務——搭建簡單web伺服器 1.1 框架選擇 1.2 程式碼 1.2.1 main.go 1.2.2 serve

[RK3399][Android7.1] 學習筆記 DRM驅動程式開發(介紹)

平臺 核心版本 安卓版本 rk Linux4.4 Android7.1 1. 簡介 DRM 全稱是 Direct Rendering Mana

cb 服務程式開發

好久沒有寫東西了,實在是太懶惰了,前一陣寫了一個服務程式,覺得挺簡單的,但是某日一位小弟卻來求救,聲稱服務程式很靈異,為此研究了一下,果然有點意思: 一、服務程式的建立: 其實服務程式的開發很簡單,只要選擇選單File-->New-->Other--->Service Applicatio

Kinect開發筆記之三Kinect開發環境配置具體解釋

pc2 1.0 微軟 .aspx 技術分享 連接 實驗 family 不同 0、前言: 首先說一下我的開發環境,Visual Studio是2013的,系統是win8的64位版本號,SDK是Kinect for windows

微信開發 微信小程式開發 封裝時間格式化工具類 年月日格式工具類

微信小程式開發過程中,關於時間的處理常常會有不同的格式要求,那麼封裝一個滿足不同格式的通用時間工具類顯得尤為重要。結合筆者多年的開發經驗,現在把封裝的時間工具類分享給大家,僅供參考。 新建一個工具類timeUtils.js,本工具類提供了三種格式的時間: 年月日時分秒格式 YYYY-MM

樹莓派開發筆記(二):qt開發環境搭建:樹莓派qt編譯和宿主機qt交叉編譯

樹莓派開發筆記(二):qt開發環境搭建:樹莓派qt編譯和宿主機qt交叉編譯前話        前面已經成功執行樹莓派,下面使用qt開發樹莓派產品。搭建樹莓派qt編譯環境(不推薦:開發編譯速度慢)        安裝樹莓派的桌面版本,可以直接配置qt環境,此種方法總是卡卡的,所

樹莓派開發筆記(一) 開發環境搭建

開發環境搭建 開發環境搭建 硬體準備 系統燒錄 系統配置 基本配置 其他配置 安裝開發軟體 開發環境搭建 硬體準備 SD-Card 樹莓派

vs2010開發linux平臺C++程式開發環境配置+用vs2010除錯linux程式 ----VisualGDB 使用教程

VIM 其實配置為IDE後,其實也是相當不錯的,編輯功能相當強大,偶爾看到有人提到了本文中的寫程式碼方式,於是就想嚐嚐新。 搜尋了一下,這個方式的帖子不是很多,稍微花了點時間,摸索了下,還行,在VS2010下編寫程式碼,到ubuntu下編譯,一切OK! 主機:

微信小程式開發 筆記

1.[wxss]設定帶透明度的rgb顏色:rgb(0,0,0,0.5); 2.小程式使用類似於iOS的NSNotification:(第三方:https://github.com/icindy/WxNotificationCenter) (1)在需要收發通知的頁面引入WxNotification

微信小程式開發筆記5——元素隨著頁面滾動吸附在頂部的效果

現在很多app都有這樣的效果,某元素隨著頁面的滾動,吸附在頂部的效果。本文將介紹實現這種效果的兩種不同的方法。 先看一下效果圖: 使用IntersectionObserver 思路 上一篇部落格詳細介紹了IntersectionObserver的用法。這裡用來實現這種吸附的

微信小程式開發筆記4—— IntersectionObserver 用法詳解

看微信文件時看到這個很有趣的api,但是官方的文件和例子關於這個api的介紹都是很讓人失望的,所以花了點時間瞭解了以下這個方法,做個記錄,供參考。 簡介 首先,我的理解是,這是一個觀察器(廢話),它用來監測目標物件與某個參照物的相交情況。什麼是相交情況?通俗的說,就是兩個區域有重

微信小程式開發筆記2——自定義導航欄元件

本文主要是熟悉微信小程式自定義元件的開發,以一個常見的導航欄(Tabbar)需求為例。 官方文件:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 首先我們先看一

開發筆記9 | 部署 Java 應用程式到阿里雲 EDAS

前言 在之前的一篇文章中,我們介紹了 如何將一個本地的 Java 應用程式直接部署到阿里雲 EDAS ,有不少讀者反饋,如果目前已經在使用阿里雲 EDAS 了,那該如何配合這個外掛部署應用呢?在本文中,我們來介紹 部署 Java 應用程式到阿里雲 EDAS。 關於 EDAS EDAS 是一個圍繞應用和微

安卓學習筆記 -- (安裝環境) Android Studio安裝配置、環境搭建詳細步驟及基本使用 Android Studio和SDK官方開發工具下載 Android Studio教程從入門到精通 Android開發-之第一個程式:HelloWorld!

1、下載Android Studio安裝配置、環境搭建詳細步驟及基本使用    https://www.cnblogs.com/yanglh6-jyx/p/Android_AS_Configuration.html https://blog.csdn.net/k491022087/ar

開發筆記13 | 部署 Node.js 應用程式到雲 ECS

<<系列文章集 前言 在之前的一篇文章中,我們介紹了 如何將一個本地的 Java 應用程式直接部署到阿里雲 ECS ,有不少讀者反饋,在本文中,我們來介紹如何部署 Node.js 應用程式到阿里雲 ECS。 本地開發 本文采用一個極其基礎的樣例《在 Web 頁面列印 HelloWorl

服務計算學習之路-開發 web 服務程式

開發 web 服務程式 文章目錄 開發 web 服務程式 簡介 開發環境 Go的http包 使用http包編寫的簡單web伺服器 http包有關路由部分 http包有關