Windows 服務專案

2021-09-06 00:26:43 字數 2303 閱讀 7658

定義

在2000/xp等基於nt 的作業系統中,有乙個服務管理器,它管理的後台程序被稱為 service。

服務是一種應用程式型別,它在後台執行,與 unix 後台應用程式類似。服務應用程式通常可以在本地和通過網路為使用者提供一些功能,例如客戶端/伺服器應用程式、web 伺服器、資料庫伺服器以及其他基於伺服器的應用程式。

後台服務 程式是在後台悄悄執行的。我們通過將自己的程式登記為服務,可以使自己的程式不出現在任務管理器中,並且隨系統啟動而最先執行,隨系統關閉而最後停止。

服務控制管理器是乙個rpc 伺服器,它顯露了一組應用程式設計介面,程式設計師可以方便的編寫程式來配置服務和控制遠端伺服器中服務程式。

服務程式通常編寫成控制台型別的應用程式,總的來說,乙個遵守服務控制管理程式介面要求的程式包含下面三個函式:

1。服務程式主函式(main):呼叫系統函式 startservicectrldispatcher 連線程式主線程到服務控制管理程式。

2。服務入口點函式(servicemain):執行服務初始化任務,同時執行多個服務的服務程序有多個服務入口函式。

3。控**務處理程式函式(handler):在服務程式收到控制請求時由控制分發執行緒引用。(此處是service_ctrl)。

另外在系統執行此服務之前需要安裝登記服務程式:installservice 函式。刪除服務程式則需要先刪除服務安裝登記:removeservice 函式。

服務型別:

service_file_system_driver=2

檔案系統驅動服務。

service_kernel_driver=1

驅動服務。

service_win32_own_process=16

獨佔乙個程序的服務。

service_win32_share_process=32

與其他服務共享乙個程序的服務。

建立乙個服務程式

//服務程式主函式。

#include

"stdafx.h"

#include

"windows.h"

#define

"serversample"

// 服務程式名

#define

szservicename

"servicesample"

// 標識服務的內部名

//內部變數

bool

bdebugserver =false ;

service_status

ssstatus ;

service_status_handle

sshstatushandle ;

dword

dwerr =0;

tchar

szerr [256];

//下面的函式由程式實現

void

winapi

service_main (dword

dwargc , lptstr *lpszargv );

void

winapi

service_ctrl (dword

dwctrlcode );

void

installservice ();

void

removeservice ();

void

debugservice (int

argc ,char ** argv );

bool

reportstatustoscmgr (dword

dwcurrentstate ,dword

dwwin32exitcode ,dword

dwwaithint );

void

addtomessagelog (lptstr

lpszmsg );

int_tmain (int

argc , _tchar * argv ) ,

};if ((argc >1)&&((*argv [1]=='-' )||(argv [1]=="/" )))

else

if (_stricmp ("remove" ,argv [1]+1)==0)

else

if (_stricmp ("debug" ,argv [1]+1)==0)

else

exit (0); }

return 0; }

the complete service sample

the topics in this section form a complete service sample:

建立簡單的Windows服務 專案

初始化的程式並執行程式 using system using system.collections.generic using system.componentmodel using system.data using system.diagnostics using system.linq usi...

seo優化服務專案

很多人都喜歡pr高,本來打算總結一下提高pr值得方法,看了一下,已經有人總結過了,而且還比較全面,方法也很好,直接轉了。2 撰寫文章,並提交到專業的文章目錄,在國外有許多專業的英文文章目錄。3 到一些pr值高的論壇發布資訊,在發布資訊的時候要記得帶上簽名,簽名裡一般都可以帶上 注意不要隨意發廣告資訊...

齒科預約服務 專案總結

最近做了乙個工期較緊的專案 齒科卷預約服務 接到通知8 17下午,晚上要來需求和原型,ui還在開發中 8 18中午收到ui,開始著手 8 19通知ui全部換新,8 19上午到公司大家開會簡單介紹專案流程,真正開始開發工作。工期分配為 8 19 8 23開發,8 24提測試,8 24 8 28測試週期...