日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

window 服务(一)

發(fā)布時(shí)間:2025/3/19 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 window 服务(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

windows服務(wù)應(yīng)用程序是一種長(zhǎng)期運(yùn)行在操作系統(tǒng)后臺(tái)的程序,它對(duì)于服務(wù)器環(huán)境特別適合,它沒(méi)有用戶界面,不會(huì)產(chǎn)生任何可視輸出,任何用戶輸出都回被寫進(jìn)windows事件日志。計(jì)算機(jī)啟動(dòng)時(shí),服務(wù)會(huì)自動(dòng)開始運(yùn)行,他們不要用戶一定登陸才運(yùn)行。

可以通過(guò)選擇菜單“開始”-〉“控制面板”-〉“管理工具”-〉“服務(wù)”來(lái)查看現(xiàn)有系統(tǒng)中的服務(wù),如下圖:

創(chuàng)建window 服務(wù)

新建一個(gè)window 服務(wù)項(xiàng)目MyService,如下圖

從工具箱的組件表中拖動(dòng)一個(gè)Timer對(duì)象到這個(gè)視圖設(shè)計(jì)器上面。

設(shè)置Timer屬性,Enable為true,Interval屬性為3000毫秒

雙擊Timer事件,添加事件

???????

后臺(tái)代碼 1 public partial class Service1 : ServiceBase 2 { 3 public Service1() 4 { 5 InitializeComponent(); 6 } 7 8 protected override void OnStart(string[] args) 9 { 10 // TODO: 在此處添加代碼以啟動(dòng)服務(wù)。 11 } 12 13 protected override void OnStop() 14 { 15 // TODO: 在此處添加代碼以執(zhí)行停止服務(wù)所需的關(guān)閉操作。 16 } 17 18 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 19 { 20 21 } 22 }

?

1 public partial class Service1 : ServiceBase 2 { 3 public Service1() 4 { 5 InitializeComponent(); 6 } 7 protected override void OnStart(string[] args) 8 { 9 // TODO: 在此處添加代碼以啟動(dòng)服務(wù)。 10 string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "啟動(dòng)"; 11 WriteLog(state); 12 } 13 protected override void OnStop() 14 { 15 // TODO: 在此處添加代碼以執(zhí)行停止服務(wù)所需的關(guān)閉操作。 16 string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "停止"; 17 WriteLog(state); 18 } 19 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 20 { 21 WriteLog(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); 22 } 23 public void WriteLog(string str) 24 { 25 using (StreamWriter sw = File.AppendText(@"c:\service.txt")) 26 { 27 sw.WriteLine(str); 28 sw.Flush(); 29 } 30 } 31 }

其中OnStart和OnStop分別是服務(wù)器啟動(dòng)和停止后,所發(fā)生的事件操作方法,WriteLog是操作方法;

將服務(wù)程序service1.cs 切換到視圖模式,用鼠標(biāo)右鍵單擊設(shè)計(jì)視圖選擇“添加安裝程序”選項(xiàng),此后在項(xiàng)目中自動(dòng)增加了一個(gè)ProjectInstaller.cs,如下圖

設(shè)置serviceInstaller1組件屬性,

ServiceName=MyServiceLog安裝服務(wù)器名字;

StartType=Automatic? 開機(jī)自動(dòng)啟動(dòng)

設(shè)計(jì)serviceProcessInstaller1的屬性Account=LocalSystem;

運(yùn)行編譯,一個(gè)簡(jiǎn)單的windows服務(wù)已經(jīng)開發(fā)完成

注:如果在代碼中的文件路徑寫成如下“service.txt”,那么此時(shí)文件保存在C:\WINDOWS\system32文件夾中。

?

安裝window服務(wù)

安裝命令:InstallUtil.exe MyServiceLog.exe

InstallUtil存在路徑為:C:\WINDOWS\Microsoft.NET\Framework\.NET版本號(hào)

復(fù)制C:\WINDOWS\Microsoft.NET\Framework\版本號(hào)? 路徑中的InstallUtil.exe 到bin/debug或bin/release文件夾中,在命令行窗口中直接運(yùn)行命令

InstallUtil.exe MyServiceLog.exe,在系統(tǒng)中注冊(cè)這個(gè)服務(wù),使它建立一個(gè)合適的注冊(cè)項(xiàng),如下圖:

?

然后再window服務(wù)列表中,啟動(dòng)MyServiceLog服務(wù)

卸載window 服務(wù)

命令:InstallUtil.exe MyServiceLog.exe /u

如果修改這個(gè)服務(wù),但是路徑?jīng)]有變化的話是不需要重新注冊(cè)服務(wù)的,直接停止服務(wù),然后用新的文件覆蓋原來(lái)的文件即可,如果路徑發(fā)生變化,應(yīng)該先卸載這個(gè)服務(wù),然后重新安裝這個(gè)服務(wù)。

?Window服務(wù)應(yīng)用程序體系結(jié)構(gòu)

.net framework對(duì)windows服務(wù)提供了更多的支持,在命名空間System.ServiceProcess下.

包括類如下:

ServiceBase 所有Window服務(wù)的基類

ServiceController 該類的一個(gè)實(shí)例代表一個(gè)具體的windows服務(wù)

ServiceControllerPermission 用于控制ServiceController的使用權(quán)限

ServiceInstaller 用于執(zhí)行對(duì)windows服務(wù)的安裝

ServiceProcessInstaller 用于執(zhí)行對(duì)windows服務(wù)的安裝,與上類的不同的是,該類可以代表一個(gè)可以執(zhí)行的windows服務(wù)的進(jìn)程.

ServiceBase類

ServiceBase方法:

方法

描述

Run()

運(yùn)行一個(gè)windows服務(wù)

OnContinue()

繼續(xù)執(zhí)行服務(wù)

OnCustomCommand()

向windows服務(wù)發(fā)出自定指令

OnPause()

暫停正在運(yùn)行的windows服務(wù)

OnPowerEvent()

當(dāng)計(jì)算機(jī)的電源狀態(tài)改變是調(diào)用

OnShutDown()

當(dāng)系統(tǒng)關(guān)閉條用OnStart()開始一個(gè)windows服務(wù)

OnStop()

結(jié)束一個(gè)windows服務(wù)

?

?ServiceBase屬性:

屬性

描述

AutoLog

表示是否將開始,結(jié)束,暫停,繼續(xù)等指令寫入事件日志

CanHandlePowerEvent

表示該服務(wù)是否支持電源事件

CanPauseAndContinue

表示該服務(wù)是否支持暫停和繼續(xù)功能

CanShutDown

表示該服務(wù)是否支持關(guān)閉功能

CanStop

表示該服務(wù)是否支持結(jié)構(gòu)功能

EventLog

應(yīng)用程序的時(shí)間日志

ServiceName

該服務(wù)名稱

?

?

?

?

?

?

?

?

?

?

?

?

ServiceController類

服務(wù)控制類,用于控制windows服務(wù)的各種具體行為,它既可以控制本地的windows服務(wù),有可以控制遠(yuǎn)程的windows服務(wù)。

ServiceControler的方法:

方法

描述

GetDivices()

得到一臺(tái)計(jì)算機(jī)上設(shè)備驅(qū)動(dòng)器服務(wù)

GetServices()

得到一臺(tái)計(jì)算上的非設(shè)備驅(qū)動(dòng)器服務(wù)

Close()

用于斷開服務(wù)連接,并且釋放服務(wù)控制器所占用的資源

Continue()

繼續(xù)被暫停的服務(wù)

ExcuteCommand()

對(duì)服務(wù)執(zhí)行一條自定義命令

Pause()

暫停服務(wù)

Refresh()

對(duì)所有屬性更新

Start()

啟動(dòng)服務(wù)

Stop()

停止服務(wù)

WaitForStatus()

等待服務(wù)到達(dá)指定的狀態(tài)

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的window 服务(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。