.Net開發Windows服務

来源:https://www.cnblogs.com/i-mengli/archive/2018/08/23/9525944.html
-Advertisement-
Play Games

2018-08-23 根據別人的整理 開發Windows服務 一、 VS2012下開發Windows服務() 1、 打開VS2012,新建項目,選擇Windows服務,此處我以開發一個定時自動發送郵件的服務來做介紹,如下圖: 2、 創建好後,編譯器會自動創建一些文件,其中會有一個Service1類文 ...


2018-08-23 根據別人的整理

開發Windows服務

一、 VS2012下開發Windows服務()

1 打開VS2012,新建項目,選擇Windows服務,此處我以開發一個定時自動發送郵件的服務來做介紹,如下圖:

 

 

2 創建好後,編譯器會自動創建一些文件,其中會有一個Service1類文件,該文件是服務的關鍵,我們可以將其重命名,這裡我將其命名為MainService,如下圖:

 

 

3 MainService的後臺代碼中會自動創建一些方法,包括服務的啟動和停止方法等,如下圖:

 

 

 

4 將服務啟動時要執行的操作放在OnStart方法中,服務停止時要執行的操作放在OnStop方法中

5 MainService.cs設計器中,單擊郵件,選擇選擇添加安裝程式,便會生成一個ProjectInstaller.cs的文件,如圖所示:

 

 

6 設置ProjectInstaller.cs的屬性,切換到屬性設置界面

1 選擇serviceInstaller1,並設置相應屬性如下圖所示:

 

 

其中:Description屬性用於設置服務安裝之後再服務界面上顯示的描述信息

      DisplayName屬性用於設置服務安裝之後再服務界面上顯示的服務名稱;

      ServiceName屬性用於設置服務的名稱,此名稱必須與ServiceBase類的ServiceName屬性設置的名稱一致,該名稱用於系統標識此服務,可以理解成DisplayName為ServiceName的別名;

      StartType屬性用於設置服務的啟動方式。

2 選擇serviceProcessInster1,設置其屬性如下:

 

 

此處主要設置Account屬性,該屬性用來指示運行該服務時的賬戶類型,一般設置為LocalSystem

7 到此步一個簡單的windows服務就創建好了,編譯程式會生成一個EmailService.exe的可執行文件,接下來便是安裝服務了。

二、Windows服務的安裝

命令安裝

-------------------------------------此處為自己命令安裝成功------------------------------------------------------------------

服務 安裝:sc create 服務名 binpath= “服務exe文件地址” displayname= "顯示名稱" start= "auto"

服務刪除 sc delete 服務名

給服務添加描述: sc description 服務名 “具體服務名稱”

------------------------------------以下方法未試-------------------------------------------------------------------

Windows服務的安裝有多種方式,比如可以再cmd下調用命令來安裝,也可以寫一個安裝程式來安裝,此處介紹使用bat批處理來安裝。

1 安裝Windows服務需要用到InstallUtil.exe程式,該程式位於:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319 .NET4.0

C:\Windows\Microsoft.NET\Framework64\v2.0.50727 .NET2.0

2 我們可以再批處理命令中直接調用以上目錄中的InstallUtil.exe程式,也可以將該程式拷貝到應用程式的目錄下,此處我選擇獎該程式拷貝到應用程式的目錄下,同時將批處理文件也創建在應用程式的的目錄下,如下圖所示:

 

3 註冊服務的批處理命令如下所示:

%~dp0\InstallUtil.exe %~dp0\EmailService.exe

Net Start EmailService  --這裡是安裝完成之後啟動服務

sc config EmailService start= auto –這裡是將服務設置為自動啟動

pause

其中%~dp0表示批處理所在的目錄

4 註銷服務的批處理命令如下所示:

%~dp0\InstallUtil.exe /u %~dp0\EmailService.exe

pause

5 啟動服務的批處理命令如下所示:

net start EmailService

pause

6 停止服務的批處理命令如下所示:

net stop EmailService

pause

7 當我們運行註冊服務批處理命令之後便會進行服務安裝,如果安裝成功,我們在服務界面將看到該服務,如下圖所示:

 

8 安裝服務時的註意事項

1 安裝程式InstallUtil.exe的版本必須於創建Windows服務的.NET版本一致;

2 如果是Win7以上版本的系統,在運行批處理命令時,應以管理員身份運行;

3 如果是Win7以上版本的系統,應特別註意安裝程式和應用程式的路徑,以便能夠正確的寫批處理命令。

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 前面講解了MEF的引用方法,介面的導入導出,類屬性的導入導出和集合的導出用法其實大家可以看到基本上大同小異的。 MEF的延遲載入 我們知道當裝配一個組件的時候,當前組件裡面的所有的Import的變數都自動去找到對應的Export而執行了實例化,有些時候出於程式效率的考慮,不需要立即實例化對象, ...
  • MEF導出類的方法和屬性 首先來說導出屬性,因為這個比較簡單,和導出類差不多,先來看看代碼,主要看我加註釋的地方,MusicBook.cs中的代碼如下: program.cs中的代碼如下: 下麵還用foreach遍歷輸出屬性的值,運行即可查看到結果。最後我會附上源碼供大家下載,這裡就不再截圖了。 下 ...
  • C 5.0 推出async和await,最早是.NET Framework 4.5引入,可以在Visual Studio 2012使用。在此之前的非同步編程實現難度較高,async使非同步編程的實現變得簡便。 各平臺對async的支持情況 |平臺|async| | | | |.NET 4.5及以上|& ...
  • 代碼: private static ImageCodecInfo GetImageCodecInfo(ImageFormat imageFormat) { ImageCodecInfo[] imageCodecInfoArr = ImageCodecInfo.GetImageDecoders(); ...
  • 前言 小編菜鳥級別的程式員最近感慨頗多,經歷了三五春秋深知程式路途遙遠而我滄海一粟看不到的盡頭到不了的終點何處是我停留的驛站。說了段廢話下麵進入正題吧! 什麼是MEF? MEF:全稱Managed Extensibility Framework(托管可擴展框架)。單從名字我們不難發現MEF是專門致力 ...
  • IoC理論的背景 我們都知道,在採用面向對象方法設計的軟體系統中,它的底層實現都是由N個對象組成的,所有的對象通過彼此的合作,最終實現系統的業務邏輯。 如果我們打開機械式手錶的後蓋,就會看到與上面類似的情形,各個齒輪分別帶動時針、分針和秒針順時針旋轉,從而在表盤上產生正確的時間。圖1中描述的就是這樣 ...
  • dotNet core 應用部署至 centos(超詳解附截圖) ...
  • 在我們使用WPF設計前臺界面時,經常會重寫數據模板,或者把控制項放到數據模板里。但是一旦將控制項放到數據模板中,在後臺就沒有辦法通過控制項的名字來獲取它了,更沒辦法對它進行操作(例如,隱藏,改變控制項的某個值)。 如果你是比我還白的小白,對我剛剛陳述的東西不清楚,接下來我簡單說一下什麼是把控制項放在數據模板中 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...