用C#把批處理文件改爲windows系統服務(簡單的C#編寫系統服務教程)

首先我個人從沒學過c#和net,只學過一點c++,所以這個教程是完全不需要c#經驗的。

最近由於工作需要,要讓一臺win7電腦在沒進到桌面前,也就是你輸入登錄密碼之前運行一段批處理命令。而在未進入桌面前,事先加載好的程序就是windows服務了。

 

而win7是自帶net3.5運行庫的,vs2008裏面的net模板也是基於3.5的版本,所以強烈建議用vs2008編寫win7的系統服務,這樣就不用再安裝任何運行庫了。

在這之前我是一直在研究vs裏面那個atl服務怎麼編寫的,那個使用c++寫的,怎麼搞都搞不定,而且還得安裝vc++2008運行庫才能實現移植,所以就放棄轉向c#了。

 

首先我們只要懂得一句,在c#裏面怎麼運行批處理命令,非常簡單:System.Diagnostics.Process.Start("批處理文件路徑");就可以了

接下來我們看看怎麼做服務,我參考了微軟官網上的教程:http://support2.microsoft.com/kb/816169

前半部分編寫可以直接參考上面的內容,在第6部OnStart那裏,把我們自己要運行的內容寫上去就可以了,例如System.Diagnostics.Process.Start("批處理文件路徑");

還有記得serviceInstaller1屬性裏面的StartType要改成Automatic,這樣服務纔會開機自動運行,不然你就得去服務管理器裏面手動改一下。

後半部份微軟的做法是把服務打包成msi的安裝包,我們可以不這麼做,而是採用命令行的方式安裝。

 

首先在完成前半部分編寫後,我們編譯一下程序,它會彈出一個窗口

沒關係,我們點確定之後,就可以得到編譯好的exe文件了,接下來就可以把vs關掉了。

c#編寫的服務,需要用installutil命令去安裝,而這個工具一般是在:C:\Windows\Microsoft.NET\Framework\v2.0.50727這個目錄裏,你們可以自己找一下,看看裏面有木有installutil.exe這個程序,有的話就ok了,接下來你可以把文件目錄寫到path環境變量裏,這樣你在cmd裏就可以直接用installutil這個命令了,要不然你每次運行都得cd到這個目錄先。

我們就先不寫環境變量,用管理員身份運行cmd,然後輸入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

然後我們找一下剛剛編譯好的exe,就在你的工程目錄的bin/debug裏面,找到後複製好它的目錄,在cmd裏面輸入

installutil “你的目錄\你的服務.exe”

安裝完畢之後,你可以在計算機-右鍵管理-服務和應用程序-服務,那裏找到你的服務名字,默認的話是Service1,如果你在上半部分有改名的話就自己找找看吧

確認無誤後就可以在命令行裏輸入net start 你的服務名

這樣服務就啓動了

重啓一下試試你的批處理文件是不是在輸入密碼前就可以運行了呀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章