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.服務除錯,可以設定臨時用編譯開關...