windows服務程式的編寫

2021-07-03 04:51:32 字數 1507 閱讀 1713

windows服務程式可以設定為開機執行,具有特權。乙個服務程式編寫完成後要進行安裝,然後通過本地服務的管理工具開啟,當然如果設定為開機自動執行就不用手動開啟了。服務程式不應該雙擊執行。

windows服務程式需要進行安裝,,也可以在服務程式的入口函式接收傳入的引數,然後進行判斷是否進行安裝,判斷接收的引數是什麼字串,然後再程式內進行安裝,這個時候,服務還沒有被註冊,也沒有被安裝,程式只能算是乙個普通應用程式。安裝之後就不應該雙擊執行了,要通過本地服務管理工具開啟或者開機啟動。

#define server_name                  "mytestserver"

//內部變數

bool                        bdebugserver=false;

service_status              ssstatus;

service_status_handle       hservice;

dword                       dwerr=0;

tchar                       szerr[256];

int _tmain(int argc, _tchar* argv)

else if(_tcsicmp(_t("remove"), argv[1]+1)==0)

else if(_tcsicmp(_t("debug"), argv[1]+1)==0)

return 0;

}service_table_entry st =,};

startservicectrldispatcher(st);//通過指定的service_main 程式會跳轉到service_main 去執行,如果失敗,可能是因為程式不是用過windows服務管理器開啟的。

//安裝的時候通過createservice可以設定開機自動啟動。

couninitialize();

return 0;

}//初始化service_status ,為了方便設定

void initservicestate(service_status *pstatus)

//設定狀態和返回值、延時

bool reportstatustoscmgr(dword dwcurrentstate, dword dwwin32exitcode, dword dwwaithint)

服務程式中的主函式中有一段用來識別傳入引數的模組,如果引數是install就進行安裝,所以最好寫乙個批處理,然後用管理員許可權執行,就能安裝了,**如下:

set filedir=%~dp0

set file=%filedir%myserver

start %file% -install

pause

安裝完之後就可以在本地服務管理器中看到對應的名字,按win+r,輸入services.msc就可以看到,任務管理器中也可以看到,但最好通過services.msc進行開啟、停止。

因為設定的是開機啟動,所以立即重啟會看到除錯檔案中的資訊(除錯檔案的寫入函式要自己提供,可以不寫)

Windows服務程式編寫

windows服務程式編寫 2014年8月17日16 08 55 1 用vs2008新建乙個空的控制台工程。如下 include include ifdef unicode define t s l s else define t s s endif define sleep time 5000 間...

如何編寫windows服務程式

如何編寫windows服務程式 原 by 張鵬 hikvision 這兩天想學習關於如何編寫windows服務程式的知識,就上網查了些資料。看了一篇文章 用c 語言編寫windows 服務程式的五個步驟 但可能由於譯者的疏忽,忘記了將關鍵 放入該文件,導致初學者可能會看不懂。所以又查閱了相關資料。自...

windows服務的編寫

windows服務的應用場合 因為其執行穩定,可以設定為開機自動啟動,可以設定合理的使用者許可權,恢復策略 服務出現異常 適合應用於7x24小時執行的後台程式。服務編碼過程中的一些要點 2.執行緒的關閉不贊成直接丟擲異常的方式,最好用通知方式,讓執行緒體自行結束。3.服務除錯,可以設定臨時用編譯開關...