Win服務程式編寫以及安裝一般步驟

来源:https://www.cnblogs.com/DiKingVue/archive/2019/08/13/10896067.html
-Advertisement-
Play Games

Win服務程式編寫以及安裝一般步驟 Windows服務的優點有:1. 能夠自動運行。2. 不要求用戶交互。3. 在後臺運行。本文將介紹常見服務程式編寫的一般步驟以及註意事項。 設計服務程式實例: 使用語言:VB.Net,開發工具:Visual Studio 2010 新建服務項目 如圖1所示: 圖1 ...


Win服務程式編寫以及安裝一般步驟

  Windows服務的優點有:1. 能夠自動運行。2. 不要求用戶交互。3. 在後臺運行。本文將介紹常見服務程式編寫的一般步驟以及註意事項。

設計服務程式實例:

  1. 創建服務程式,主要功能:隔段時間自動寫入字元串到文本文檔中。

  使用語言:VB.Net,開發工具:Visual Studio 2010

  • 新建服務項目

  如圖1所示:

圖1

  • 添加組件

    操作如圖2,得到如圖3結果

圖2

 

圖3

  System.windows.forms中的time組件在服務程式中部適用,所以此處要選擇system.timers.timer。繼續圖3操作後設置timer以及service1的屬性.如圖4/5。

圖4

 

圖5

  • 程式編寫

圖6

  代碼如下:

 1 Protected Overrides Sub OnStart(ByVal args() As String)
 2 
 3 ' 請在此處添加代碼以啟動您的服務。此方法應完成設置工作,
 4 
 5 ' 以使您的服務開始工作。
 6 
 7 Timer1.Start()
 8 
 9 End Sub
10 
11  
12 
13 Protected Overrides Sub OnStop()
14 
15 ' 在此處添加代碼以執行任何必要的拆解操作,從而停止您的服務。
16 
17 Timer1.Stop()
18 
19 End Sub
20 
21  
22 
23 Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
24 
25 Dim witer As StreamWriter = New StreamWriter("C:\string.txt", True)
26 
27 witer.WriteLine("YourText")
28 
29 witer.Close()
30 
31 End Sub

 

  或者基於filestream寫入,代碼如下:

 1 Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
 2 
 3 Static i As Integer = 1
 4 
 5 Dim fstream As New FileStream("G:\string.txt", FileMode.OpenOrCreate, FileAccess.Write)
 6 
 7 Dim write As New StreamWriter(fstream)
 8 
 9 fstream.Seek(1, SeekOrigin.End)
10 
11 write.Write("MyTestService" & i.ToString)
12 
13 write.Close()
14 
15 fstream.Close()
16 
17 i += 1
18 
19 End Sub

 

  • 服務程式安裝

 

 

圖7

  圖7操作後出現如圖8界面,設置安裝控制項屬性如圖9和圖10

圖8

圖9

圖10

  .net編寫服務程式集成了許多的功能,此處創建服務安裝,並不需要編寫程式,只需添加控制項,修改屬性即可,十分方便。

 

  • 編譯生成

  編譯會出現警告,如圖11,但程式沒出先錯誤,查看C:\出現"string.text"文檔,裡面寫入了文本。

圖11

 

  • 安裝及卸載

  啟動vs命令提示符視窗。如圖12

圖12

  安裝

  註意要以管理員身份運行

  Windows服務安裝異常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日誌。不可 訪問的日誌: Security。解決辦法,以管理員身份運行即可。

  輸入代碼:

    InstallUtil C:\Users\h\Desktop\timetest_WindowsService\timetest_WindowsService\bin\Debug\timetest_WindowsService.exe

圖13

  卸載

    installutil/u C:\Users\h\Desktop\timetest_WindowsService\timetest_WindowsService\bin\Debug\timetest_WindowsService.exe

圖14

  預設情況下,Windows服務基於安全考慮,是不允許任何服務程式和桌面進行交互的。也就是說,使用任何的Windows Form 的很多特性將會莫名奇妙的不起作用,如進行messageBox的顯示,啟動另一進程,諸如:打開某個pdf格式的文件,者使用System.Windows.Form.Timer對象也不行,這種不起作用表現在沒有進行服務程式安裝的情況下調試的時候會提示無法啟動服務需要安裝的警告,但是 messageBox仍會顯示,pdf格式的文檔仍會打開;奇怪的是,在安裝後,啟動服務程式後,messageBox以及pdf格式的文檔均不會打,開程式將沒任何的響應。由於Windows服務具有難以調試的特點,如果不註意這點,你反覆檢查自己的代碼,都很難發現問題的所在的。

  但也並不是說不能編寫複雜的互動式服務程式,只是涉及到的知識會更複雜一些,通常會用涉及到一些Windows API介面的操作。本文旨在說明服務程式編寫的一般步驟,對於複雜的交互服務程式,其一般流程大致相同,網上已有大神在此有詳細的解釋說明。可參考博客:http://www.cnblogs.com/gnielee/archive/2010/04/08/session0-isolation-part2.html,裡面有很詳細的介紹。

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • Flink 序列化機制 <! more https://t.zsxq.com/JaQfeMf 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式入門" 3、 "Flin ...
  • Flink Metrics 有如下模塊: <! more "Flink Metrics 源碼解析 —— Flink metrics core" "Flink Metrics 源碼解析 —— Flink metrics datadog" "Flink Metrics 源碼解析 —— Flink met ...
  • JobManager 處理 SubmitJob <! more https://t.zsxq.com/3JQJMzZ 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式 ...
  • JobManager 的作用 <! more https://t.zsxq.com/2VRrbuf 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式入門" 3、 "F ...
  • 字元串格式化處理 遠古寫法 以前通常使用運算符號 , 插入的值 類型, 指插入的值為包含 3 位小數的浮點數: 關鍵字插入法: Python 3 推薦方法 新版本 Python 中,應選擇使用字元串方法 ,每個替換欄位都用 大括弧(花括弧)括起,括弧內可留空或添加格式設置信息: 一般用法: 索引也可 ...
  • JobGraph <! more https://t.zsxq.com/naaMf6y 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式入門" 3、 "Flink 從 ...
  • 在平時看各種框架的源碼的過程中,經常會看到一些位移運算,所以作為一個Java開發者是一定掌握位移運算的。 正數位移運算 Java中有三個位移運算: 我們直接看一下Demo: 乍一眼看到上面Demo的列印結果,你應該是懵逼的,接下來我來解釋一下這個結果到底是如何運算出來的。 上面的Demo中有“2”和 ...
  • 第一種方法: 採用排序,進行兩趟冒泡排序,當數據基本有序(升序)且不要求按照原有數據中的順序輸出時可選擇此方法 第二種方法: 輸出的數據按照原有數據中的順序排列 測試數據: 懶得輸入,就直接初始化了 註意:在第二次使用同一組數據時,需要重新輸入或者定義另一個數組賦初值,切不可直接使用,因為冒泡排序已 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...