編寫服務程式

2021-07-25 12:52:04 字數 2877 閱讀 5221

編寫服務程式會用到這些函式:

*服務主函式

servicemain()

startservicectrldispatcher() //dispatcher n. 排程員;[計] 排程程式;[計] 分配器

*服務控制處理函式

servicectrlhandle()

registerservicectrlhandle()

首先建立乙個win32的空專案,然後新增原始檔,編寫**

# include

# include

# include

# define file_path "e:\\log.txt"

# define sleep_time 5000

void servicemain(int argc, char **argv);//服務主函式

void winapi servicectrlhandler(dword opcode);//服務控制函式

service_status m_servicestatus;//服務狀態

service_status_handle m_servicestatushandle;//服務狀態控制代碼

int writetolog(char *str);

bool brunning = true;

int main() //服務程式入口也是main

void servicemain(int argc, char **argv)

writetolog("registerservicectrlhandler success");

m_servicestatus.dwcurrentstate = service_running;//註冊後就執行了

//將服務狀態報告給服務控制器

setservicestatus(m_servicestatushandle, &m_servicestatus);

brunning = true;

//這個服務程式的例子就用來檢查電腦記憶體大小吧

memset(&memstatus,'\0',100);

while (brunning)

writetolog("service stopped");

}

//當我們做好乙個服務程式後,服務程式就會安裝,可以在服務控制面板裡找到,比如停止,啟用服務等都是在

//服務控制函式裡進行的

void winapi servicectrlhandler(dword opcode)

setservicestatus(m_servicestatushandle,&m_servicestatus);

}int writetolog(char *str)

然後生成解決方案,為了後來使用cmd敲路徑比較方便,把生成的.exe檔案複製到c盤的test資料夾下吧,

這裡我編寫的服務名字是」服務名稱」,然後安裝服務,如果現在直接去看(右擊計算機-管理-計算機管理(本地)-雙擊服務)的話,

是看不到的,這裡可以用sc.exe工具去完成

按下win+r鍵,輸入cmd,回車,然後輸入sc,回車,然後輸入:

sc create 服務名稱 binpath= c:\test\編寫服務程式.exe

create表示根據自己寫的服務程式建立乙個服務,第三個是服務的名字,注意binpath和等於號之間有空格,後面就是解決方案生成的.exe檔案所在路徑了

然後再去檢視,注意要 操作-重新整理

這裡要注意一點, !!可能會提示失敗,訪問許可權不足,可以右擊計算機-管理-計算機管理(本地)-系統工具-本地使用者和組-使用者-雙擊administrator,將賬戶已禁用的勾去掉,重啟就可以了,或者去登錄檔改也行,具體可以自己去搜

//安裝後,在服務裡重新整理一下就可以看到編寫的服務了

sc start 服務名稱 //啟用服務

sc delete 服務名稱 //刪除服務

這裡例項的服務程式是用來檢查可用執行記憶體大小的,將結果寫入日誌(文字檔案),啟用服務後,每五秒就迴圈檢查一次並寫入日誌,這裡是在e盤,

啟用服務:

關閉該文字,再開啟

關閉服務

刪除服務的話只有用sc了,

這裡刪除不了,輸入sc delete 服務名稱

回車就可以刪除了

linux 編寫服務程式

以前我們在看 unix環境高階程式設計 的時候,有專門的整章詳細介紹如何編寫乙個後台daemon程式 精靈程式 主要涉及到建立會話組,切換工作目錄,設定檔案遮蔽字,關閉不必要的描述符等多個操作。這些操作對於每乙個後台程式來說都是類似的。在linux中專門提供了乙個函式來完成這個daemon化的過程,...

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服務程式可以設定為開機執行,具有特權。乙個服務程式編寫完成後要進行安裝,然後通過本地服務的管理工具開啟,當然如果設定為開機自動執行就不用手動開啟了。服務程式不應該雙擊執行。windows服務程式需要進行安裝,也可以在服務程式的入口函式接收傳入的引數,然後進行判斷是否進行安裝,判斷接收的...