C windows服務的建立與除錯

2021-08-16 19:31:51 字數 4161 閱讀 2773

windows service這一塊並不複雜,但是注意事項太多了,網上資料也很凌亂,偶爾自己寫也會丟三落四的。所以本文也就產生了,本文不會寫複雜的東西,完全以基礎應用的需求來寫,所以不會對windows service寫很深入。

本文介紹了如何用c#建立、安裝、啟動、監控、解除安裝簡單的windows service 的內容步驟和注意事項。

一、建立乙個windows service

1)建立windows service專案

2)對service重新命名

將service1重新命名為你服務名稱,這裡我們命名為servicetest。

二、建立服務安裝程式

1)新增安裝程式

之後我們可以看到上圖,自動為我們建立了projectinstaller.cs以及2個安裝的元件。

2)修改安裝服務名

右鍵serviceinsraller1,選擇屬性,將servicename的值改為servicetest。

3)修改安裝許可權

右鍵serviceprocessinsraller1,選擇屬性,將account的值改為localsystem。

三、寫入服務**

1)開啟servicetest**

右鍵servicetest,選擇檢視**。

2)寫入service邏輯

新增如下**: 12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

35using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.diagnostics;

using system.linq;

using system.serviceprocess;

using system.text;

namespace windowsservicetest

protected override void onstart(string args)

}protected override void onstop()}}

}這裡我們的邏輯很簡單,啟動服務的時候寫個日誌,關閉的時候再寫個日誌。

四、建立安裝指令碼

在專案中新增2個檔案如下(必須是ansi或者utf-8無bom格式):

1)安裝指令碼install.bat?1

23%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe windowsservicetest.exe

net start servicetest

sc config servicetest start= auto

2)解除安裝指令碼uninstall.bat

1%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe /u windowsservicetest.exe

3)安裝指令碼說明

第二行為啟動服務。

第三行為設定服務為自動執行。

這2行視服務形式自行選擇。

4)指令碼除錯

如果需要檢視指令碼執行狀況,在指令碼最後一行加入pause

五、在c#中對服務進行控制

0)配置目錄結構

簡歷乙個新wpf專案,叫windowsservicetestui,新增對system.serviceprocess的引用。

在windowsservicetestui的bin\debug目錄下建立service目錄。

將windowsservicetest的生成目錄設定為上面建立的service目錄。

生成後目錄結構如下圖

1)安裝

安裝時會產生目錄問題,所以安裝**如下: 12

3456

78string currentdirectory = system.environment.currentdirectory;

system.environment.currentdirectory = currentdirectory + "\\service";

process process = new process();

process.startinfo.useshellexecute = false;

process.startinfo.filename = "install.bat";

process.startinfo.createnowindow = true;

process.start();

system.environment.currentdirectory = currentdirectory;

2)解除安裝

解除安裝時也會產生目錄問題,所以解除安裝**如下:12

3456

78string currentdirectory = system.environment.currentdirectory;

system.environment.currentdirectory = currentdirectory + "\\service";

process process = new process();

process.startinfo.useshellexecute = false;

process.startinfo.filename = "uninstall.bat";

process.startinfo.createnowindow = true;

process.start();

system.environment.currentdirectory = currentdirectory;

3)啟動

**如下:12

345using system.serviceprocess;

servicecontroller servicecontroller = new servicecontroller("servicetest");

servicecontroller.start();

4)停止12

3servicecontroller servicecontroller = new servicecontroller("servicetest");

if (servicecontroller.canstop)

servicecontroller.stop();

5)暫停/繼續12

3456

78servicecontroller servicecontroller = new servicecontroller("servicetest");

if (servicecontroller.canpauseandcontinue)

6)檢查狀態12

servicecontroller servicecontroller = new servicecontroller("servicetest");

string status = servicecontroller.status.tostring();

六、除錯windows service

1)安裝並執行服務

2)附加程序

3)在**中加入斷點進行除錯

C windows服務 一 建立

新建服務專案 雙擊service1.cs,出現介面,右鍵,選擇 新增安裝程式 專案中會生成 projectinstaller.cs,修改projectinstaller.cs 設定執行該服務應用程式時所使用的帳戶型別,預設account,服務安裝的時候會提示輸入使用者名稱密碼 this.servic...

visudal studio建立dll與呼叫dll

版本visudal studio 2015 剛剛接觸dll這東西,在建立和使用dll的過程中,踩了不少坑,在度娘裡有各種各樣的方法,但有的地方說得不夠詳細清楚,在綜合各種方法後,我總結了由建立到使用的過程,在這裡我只總結最常用的執行時動態鏈結,靜態的就不多說了,希望對你們有幫助。一 dll建立 這一...

C Windows服務的安裝和解除安裝批處理

echo 請按任意鍵開始安裝後台服務.echo 清理原有服務項.systemroot microsoft.net framework v4.0.30319 installutil u websocketservices.exe 這裡是windows服務專案生產的exe檔案 echo 清理完畢,開始安...