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 清理完畢,開始安...