WindowsService服務程序開發 安裝和卸載


安裝服務:
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

 

 

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 目錄  命令,以項目中的已編譯可執行文件所在的目錄作為參數,安裝服務:

1. 方法 1

因為Installutil.exe程序在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 目錄下,需要通過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

1. 方法 2

找到 Installutil.exe 文件,並把它復制到 E:\XTestDemo\X_15_WindowsService\bin\Debug\ 目錄

現在 Installutil.exe 程序在 E:\XTestDemo\X_15_WindowsService\bin\Debug\ 目錄下,需要通過cmd命令 "cd" 切換目錄。

安裝服務:
installutil.exe X_15_WindowsService.exe

卸載服務:
installutil.exe X_15_WindowsService.exe

七:查看服務狀態

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

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

通過“屬性”,可以查看到更詳細的信息。

 

原文地址:http://www.cnblogs.com/babycool/p/3534786.html

相關參考:

用C#創建Windows服務(Windows Services) - Gsun - 博客園

C#開發Windows Services服務--服務安裝失敗的解決辦法 - 無名小蝦 - 博客園

C#應用服務器!包括(消息服務器,更新服務器,應用服務器)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM