使用C 建立windows服務

2022-01-16 21:37:10 字數 4401 閱讀 4006

前言:

說幹就幹!

開發環境:

作業系統:windows 10 x64

開發環境:vs2017

程式語言:c#

.net版本:.net framework 4.5

目標平台:x86

windows service簡介:

乙個windows服務程式是在windows作業系統下能完成特定功能的可執行的應用程式。windows服務程式雖然是可執行的,但是它不像一般的可執行檔案通過雙擊就能開始執行了,它必須有特定的啟動方式。這些啟動方式包括了自動啟動和手動啟動兩種。對於自動啟動的windows服務程式,它們在windows啟動或是重啟之後使用者登入之前就開始執行了。只要你將相應的windows服務程式註冊到服務控制管理器(service control manager)中,並將其啟動類別設為自動啟動就行了。而對於手動啟動的windows服務程式,你可以通過命令列工具的net start命令來啟動它,或是通過控制面板中管理工具下的服務一項來啟動相應的windows服務程式。

同樣,乙個windows服務程式也不能像一般的應用程式那樣被終止。因為windows服務程式一般是沒有使用者介面的,所以你也要通過命令列工具或是下面圖中的工具來停止它,或是在系統關閉時使得windows服務程式自動停止。因為windows服務程式沒有使用者介面,所以基於使用者介面的api函式對其是沒有多大的意義。為了能使乙個windows服務程式能夠正常並有效的在系統環境下工作,程式設計師必須實現一系列的方法來完成其服務功能。windows服務程式的應用範圍很廣,典型的windows服務程式包含了硬體控制、應用程式監視、系統級應用、診斷、報告、web和檔案系統服務等功能。

使用c#開發windows服務的步驟:

1.建立windows service專案

從visual studio 2017 工程中選取 windows 服務(windows service)選項,給工程乙個新檔名,然後點選 確定

建立後的專案如下圖所示:

2.找到目錄結構中的onstart函式和onstop函式,onstart函式在啟動服務時執行,onstop函式在停止服務時執行

protected override void onstart(string args)

protected override void onstop()

startload核心**如下:
createfilepath();//判斷資料夾是否存在,不存在則建立

//獲取前一天日期

string lastyear = datetime.now.adddays(-1).year.tostring();

string lastmonth = datetime.now.adddays(-1).month.tostring();

if (lastmonth.length < 2) lastmonth = "0" + lastmonth;

string lastday = datetime.now.adddays(-1).day.tostring();

if (lastday.length < 2) lastday = "0" + lastday;

//獲取當天日期

string year = datetime.now.year.tostring();

string month = datetime.now.month.tostring();

if (month.length < 2) month = "0" + month;

string day = datetime.now.day.tostring();

if (day.length < 2) day = "0" + day;

//設定所有檔名

int c = 0; //實際讀取的位元組數

while ((c = reader.read(buff, 0, buff.length)) > 0)

writer.close();

writer.dispose();

reader.close();

reader.dispose();

response.close();}}

}

安裝服務步驟:1.開啟設計介面,右鍵選擇「新增安裝程式」,如圖所示:

介面上會出現serviceinstaller1和serviceprocessinstaller1

修改serviceinstaller1屬性,將starttype修改為automatic,servicename改為cloudimageload,同時可以新增description屬性,也就是你的windows服務的描述資訊(建議新增)

修改serviceprocessinstaller1屬性,將account屬性改為localsystem

2.進行服務的安裝

以「管理員身份」開啟vs2017命令提示符工具,記住一定要以管理員身份執行

隨後通過命令cd c:\windows\microsoft.net\framework64\v4.0.30319進入檔案目錄

通過命令installutil d:\軟體開發\cloudimageload\cloudimageload\bin\debug\cloudimageload.exe完成服務的安裝

「d:\軟體開發\cloudimageload\cloudimageload\bin\debug\cloudimageload.exe」及為你專案生成的路徑

檢視服務列表,此時就可以看到服務已經在服務列表中了

第一次安裝的服務應該是沒有執行的,需要手動啟動一下!

服務的解除安裝命令:installutil /u d:\軟體開發\cloudimageload\cloudimageload\bin\debug\cloudimageload.exe

1.service啟動屬性:

manual      服務安裝後,必須手動啟動。

automatic    每次計算機重新啟動時,服務都會自動啟動。

disabled     服務無法啟動。

2.新建的service專案,其中各屬性的含義(設計檢視->右鍵屬性):

autolog 是否自動寫入系統的日誌檔案

canhandlepowerevent 服務時候接受電源事件

canpauseandcontinue 服務是否接受暫停或繼續執行的請求

canshutdown 服務是否在執行它的計算機關閉時收到通知,以便能夠呼叫 onshutdown 過程

canstop 服務是否接受停止執行的請求

servicename 服務名

使用C 建立windows服務程式

建立windows服務專案 一 建立服務 1 檔案 新建 專案 windows桌面 windows服務,修改你要的專案名稱。我這不改名,仍叫windowsservice1,確定。2 其中的program.cs檔案是入口,service1.cs是服務檔案,所有的邏輯都在這。service1.cs包含兩...

C 建立Windows服務

using system using system.collections.generic using system.componentmodel using system.data using system.diagnostics using system.linq using system.se...

windows服務建立

以下是安裝命令 啟動服務命令 停止服務命令 解除安裝服務命令 安裝命令 c windowservice installutil.exe c windowservice organizclientsocketservice.exe 啟動服務命令 net start 搜才organiz客戶端資料同步服務...