1. 建立一個Windows服務應用程式
建立項目——》Visual C# 左側的"+"——》Windows ——》Windows 服務(右側模闆)——》輸入名稱,确定建立項目
2. 設定Windows服務的屬性(Windows服務裡沒有窗體,是以點選左側設計器裡空白的地方即可在右側屬性欄裡看到屬性)
這裡屬性是控制伺服器是否可以停止,暫停,繼續等等的操作。根據需要選擇。屬性的名字已經很明白了,不需要再做太多解釋。我是把 CanPauseAndContinue 和 CanShutDown 設定為 true。
ServiceName 屬性是這個服務的以後再服務管理器中顯示的名稱。
3. 設定Windows服務的安裝程式
在設計視窗裡右鍵單擊滑鼠,選擇“添加安裝程式”。這樣就可以添加 ProjectInstaller.cs 以及serviceInstaller1 和 serviceProcessInstaller1 這兩個對象都有一個比較重要的屬性。
單擊 serviceInstaller1 在右側的屬性視窗裡有 StartType 屬性,指定的是啟動服務的方式和時間。如果想讓服務開機啟動,并一直運作,将這個屬性設定為 Automatic。
單擊 serviceProcessInstaller1 在右側的屬性視窗裡有 Account 屬性,指定的是運作此服務的帳戶類型。如果想讓所有使用者都使用這個服務,将這個屬性設定為 LocalService
目前所有的建立及屬性設定工作就結束了。下面開始進行代碼編寫工作。
4. 需要用計時器來定時檢測程式是否運作,是以我們要增加一個Timer控件。
打開代碼視窗。
首先,增加 using System.Timers; 引用。
這裡有OnStart(string[] args)和OnStop()兩個函數。顧名思義,OnStart 就是服務啟動時運作的代碼。OnStop就是服務結束時運作的代碼。
我們在OnStart裡建立Timer控件,并設定其屬性和增加事件。
System.Timers.Timer t = new System.Timers.Timer(1000); //這裡的1000指的是Timer的時間間隔為1000毫秒
t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Click); //Timer_Click是到達時間的時候執行事件的函數
t.AutoReset = true; //設定是執行一次(false)還是一直執行(true)
t.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件
這樣,當服務運作後,每1秒都将執行 Timer_Click 函數
5. 編寫 Timer_Click 函數
private void Timer_Click(Object sender, ElapsedEventArgs e)
{
Process[] localByName = Process.GetProcessesByName("360tray.exe");
//這裡的360tray.exe就是你想要執行的程式的程序的名稱。基本上就是.exe檔案的檔案名。
//localByName得到的是程序中所有名稱為"360tray.exe"的程序。
if (localByName.Length == 0) //如果得到的程序數是0, 那麼說明程式未啟動,需要啟動程式
{
Process.Start("c://360tray.exe"); //啟動程式 "c://360tray.exe" 是程式的路徑
}
else
//如果程式已經啟動,則執行這一部分代碼
}
}
現在所有代碼的工作也完成了。達到的功能是當啟動服務後,每秒檢測360tray.exe是否運作。如果沒有運作,則啟動30tray.exe。如果已經運作,則不進行任何操作。
6. 生成Windows服務的應用程式
單擊 生成 ——》生成 WindowsService1
這時,在 C:/My Documents/Visual Studio 2005/Projects/WindowsService1/WindowsService1/bin/Debug 檔案夾裡會生成 WindowsService1.exe 檔案。
如果成功即可執行下一步。
7. 安裝服務
服務與應用程式不一樣,不能夠通過在Visual Studio裡運作,必須使用安裝軟體安裝到Windows 服務裡去。
這個安裝軟體在 C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 這個檔案夾裡
程式名稱為 InstallUtil.exe
要運作這個程式需要使用 command "指令提示符" 程式。
單擊開始——》運作——》輸入"cmd”單擊确定
輸入cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 回車 進入這個檔案夾
輸入InstallUtil C:/My Documents/Visual Studio 2005/Projects/WindowsService1/WindowsService1/bin/Debug/WindowsService1.exe 即InstallUtil + 服務.exe檔案的位址 回車。這時服務就安裝完畢了。
如果想解除安裝這個服務也是用這個軟體。
輸入InstallUtil C:/My Documents/Visual Studio 2005/Projects/WindowsService1/WindowsService1/bin/Debug/WindowsService1.exe -u 即"InstallUtil + 服務.exe檔案的位址 - u" 回車。這時服務就解除安裝完畢了。
當然我們現在不需要解除安裝這個服務。現在隻差最後一步實作我們的功能了。
8. 啟動服務
服務安裝成功以後,并沒有啟動,我們需要在服務管理器中啟動它,并且如果運作的程式是帶窗體的程式,還需要修改一下服務的屬性。
進入 控制台——》管理工具——》服務 打開服務管理器。
在右側的服務清單中找到我們剛才安裝的服務,服務名稱就是第2步中ServiceName屬性的内容。這裡就是WindowsService1。
如果運作的程式是帶窗體的程式,那麼右鍵單擊這個服務 選擇“屬性”——》 單擊“登入”标簽(在最上面)——》選擇本地系統帳戶——》在“允許服務與桌面互動”複選框前打勾——》單擊确定退出屬性。
這是,帶有窗體的程式才會正常運作。否則隻會在程序中看到該程式,但是沒有窗體。
現在可以單擊這個服務,然後單擊啟動來啟動這個服務了。
全部過程結束。