<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
開啟VS2022,新建專案。
建立成功後的目錄結構如左側所示,至此專案構建完成。
新增安裝程式
重新生成一下解決方案
至此設定完成。
在工程目錄的binDebug目錄下 新建兩個指令碼檔案–install.bat和uninstall.bat,分別用於安裝服務和解除安裝服務。
install.bat
%SystemRoot%Microsoft.NETFramework64v4.0.30319InstallUtil.exe %~dp0MyFirstWindowsService.exe Net Start MyFirstService sc config MyFirstService start=auto pause
簡單說明
uninstall.bat
%SystemRoot%Microsoft.NETFramework64v4.0.30319InstallUtil.exe /u %~dp0MyFirstWindowsService.exe pause
至此設定完成。
執行安裝指令碼檔案
可以右鍵我的電腦 -> 管理 找到服務,在右側尋找我們自己的服務名稱
執行解除安裝指令碼檔案
如果輸入上述條件沒有找到可建立的工程,點選安裝多個工具和功能。
或者在某個工程的工具裡點選獲取工具和功能
等待安裝完畢,按上面的步驟來即可。
使用本機服務和定時器Timer,簡單做一個WindowsService的記錄紀錄檔。
按照上述步驟建立一個新的Windows服務,名為WindowsService2,並且服務名稱為WindowsService2。
我們主要的程式碼在Service1.cs中寫,選中該檔案,右鍵選擇檢視程式碼。
記得在App.config中設定鍵值對 value是紀錄檔記錄地址 可自行選擇。
主要程式碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; using System.Timers; using System.IO; using System.Configuration; namespace WindowsService2 { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } //建立定時器 public System.Timers.Timer ServiceTimer; //從App.config中取值 這裡我的紀錄檔檔案位置在F:log.txt 這裡可以自行設定 public string filePath = ConfigurationManager.AppSettings["FilePath"]; //主要功能程式碼在這裡寫 protected override void OnStart(string[] args) { //紀錄檔記錄方法 WriteLog(filePath, "啟動服務。"); InitTimer();//初始化的定時器 } protected override void OnStop() { //停止服務 WriteLog(filePath , "停止服務。"); } public void InitTimer() { //設定定時器兩秒執行一次 ServiceTimer = new System.Timers.Timer(2000); //執行的操作為Excute ServiceTimer.Elapsed += Excute; //是否重複執行 ServiceTimer.AutoReset = true; //是否執行Elapsed中的事件 ServiceTimer.Enabled = true; } public void Excute(Object o , System.Timers.ElapsedEventArgs e) { //判斷是否執行 if (!File.Exists(filePath)) { //不存再則建立 File.Create(filePath); } //再這裡寫入紀錄檔 string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); WriteLog(filePath, DateTime.Now.ToString(), "進行了操作。 紀錄檔檔案路徑位於: " + filePath + " AppSetting : " + ConfigurationManager.AppSettings["FilePath"]); } //寫入紀錄檔檔案 public static void WriteLog(string path, params string[] s) { //建立輸入流 System.IO.StreamWriter writer = null; try { writer = new System.IO.StreamWriter(path, true); StringBuilder sb = new StringBuilder(""); for (int i = 0; i < s.Length; i++) { sb.Append(" "); sb.Append(s[i]); } writer.WriteLine(sb.ToString()); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { //關閉流 釋放資源 if (writer != null) { writer.Close(); writer.Dispose(); } } } } }
執行結果
每次更改執行程式碼後需要右鍵專案 -> 重新生成,否則更改不會生效。
以Configuration的名稱空間舉例,即使加了using System.Configuration; 也有可能出現ConfigurationManager無法使用,這時我們可以手動引入。
找到工程右側引入,右鍵新增參照。
編碼問題
建立bat檔案時,有時候字元集編碼可能不對,導致指令碼執行時出現問題,我們可以用Notepad3開啟,更改編碼格式為ANSI或者UTF-8。
許可權問題
執行指令碼檔案時,需要右鍵以管理員身份執行,否則就會出現以下情況,導致服務安裝失敗。
空格問題
如果指令碼某些地方出現空格,會導致指令碼執行失敗。
比如
會導致以下報錯
到此這篇關於VS2022建立Windows服務程式的方法步驟的文章就介紹到這了,更多相關VS2022建立Windows服務程式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45