玩轉Windows服務系列——使用Boost.Application快速構建Windows服務


玩轉Windows服務系列——創建Windows服務一文中,介紹了如何快速使用VS構建一個Windows服務。Debug、Release版本的注冊和卸載,及其原理服務運行、停止流程淺析分別介紹了Windows服務的注冊、卸載、運行、停止的簡單流程。那么今天就來介紹一下如何使用開源庫Boost.Application來快速構建一個Windows服務。

Boost.Application簡介

Boost.Application 是一個開源的C++庫,主要用於構建跨平台的服務,包括Windows、Unix、Linux、MaxOS等。沒錯,這個庫可以用來做跨平台的服務。Boost.Application 使用開源協議 Boost Software License, Version 1.0

Boost.Application 目前還不是Boost官方的庫,想要使用它,需要到Github上下載最新代碼,當前版本為0.4.12。

用Boost.Application構建Windows服務

第一步,用VS創建一個控制台程序。

控制台程序

第二步,配置Boost.Application以及Boost的include路徑和lib路徑。

第三步,將Boost.Application目錄下的README.md文件中的示例代碼拷貝到 myservice.cpp 中並覆蓋原來所有的代碼。

第四部,將編譯選項設置為多字節

多字節

第五步,編譯並運行程序

運行程序

由於這時候還沒有注冊服務,所以以控制台的方式運行起來就會報錯了。

第六步,將程序注冊為Windows服務,在命令行中執行如下命令:

sc create myservice binpath= "D:\Code\C++\CommonCode\Win32\Debug\myservice.exe" type= own start= demand displayname= "service test"

sc命令的詳細使用方法可以參考玩轉Windows服務系列——命令行管理Windows服務

在Windows服務管理器中可以看到剛剛創建的服務:

myservice

第七步,啟動服務,然后停止服務,在服務所在目錄,可以看到產生了一個log.txt文件,

Start Log...
-----------------------------
---------- Arg List ---------
-----------------------------
myservice
-----------------------------
0, running...
1, running...
2, running...
Stoping my application...

這樣,一個完整的Windows服務就算完成了。

注冊服務程序

在Boost.Application 的 “Boost.Application\example\setup”目錄下,有一個用於注冊卸載服務的示例代碼。

將此示例代碼編譯為service_setup_ex.exe程序后,就可以使用此程序進行服務的注冊和卸載了。

安裝服務,支持設置程序路徑、服務名字、顯示名字、描述、啟動模式、依賴服務等,如下:

service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe"
service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --display="My Service"
service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --display="My Service" --description "Service Description"
service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --user=".\Renato Tegon Forti" --pass="x1x1x1"
service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --start="manaul" --depends="service1\service2\service3"

檢測服務:

service_setup_ex.exe -c --name="My Service"

卸載服務:

service_setup_ex.exe -u --name="My Service" --path="c:\myservice\service.exe"

參考資料

Boost.Application

Build a Server Application using Application Library

系列鏈接

玩轉Windows服務系列——創建Windows服務

玩轉Windows服務系列——Debug、Release版本的注冊和卸載,及其原理

玩轉Windows服務系列——無COM接口Windows服務啟動失敗原因及解決方案

玩轉Windows服務系列——服務運行、停止流程淺析

玩轉Windows服務系列——Windows服務小技巧

玩轉Windows服務系列——命令行管理Windows服務

玩轉Windows服務系列——Windows服務啟動超時時間

玩轉Windows服務系列——使用Boost.Application快速構建Windows服務

玩轉Windows服務系列——給Windows服務添加COM接口


免責聲明!

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



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