﻿# 介紹好用工具：ServiceEx ( 將應用程式轉成 Windows 服務 )

[ServiceEx](http://serviceex.com/) 是個好用且免費的小工具，他可以將任意**應用程式**註冊成 Windows 服務，例如 Windows 應用程式、Console 應用程式，並且讓這些**應用程式**以**服務**的方式啟動，如果該程式主動關閉或意外關閉，[ServiceEx](http://serviceex.com/) 還會自動將程式自動重啟，對於不瞭解 Windows 服務應用程式開發的人可以考慮用這套工具。

[ServiceEx](http://serviceex.com/) 目前只能透過指令列工具執行，而且設定檔必須手動編輯一個名為 ServiceEx.ini 的檔案才行，以下是安裝一個普通應用程式為 Windows 服務應用程式的過程。

先假設你有個應用程式叫做 AutoPlurker.exe，該程式是個可以自動發噗的程式，且該程式是以 Console 應用程式的方式開發的，所以該程式會不斷執行並不會只執行一次就自動停止，注意: 這是個很重要的前提，否則你就設定 **排定的工作(Task Scheduler)** 定時執行即可，沒必要轉換成 Windows 服務。

假設你希望該應用程式希望註冊成 Windows 服務的名稱為 **AutoPlurker**，以下是安裝的過程：

1\. 下載主程式 [http://serviceex.com/files/ServiceEx.exe](http://serviceex.com/files/ServiceEx.exe "http://serviceex.com/files/ServiceEx.exe")

2\. 建立一個 ServiceEx 設定檔，並取名為 **AutoPlurker.ini** 內容如下 (含中文註解說明)  
    注意: 該文件不能用 UTF-8 編碼，否則會安裝失敗，請用 ASCII 編碼儲存即可

```
[ServiceEx]
; 設定執行程式的完整路徑 (注意：路徑中有空白時需加上雙引號包起來)
ServiceExeFullPath = "C:\Program Files\Will Software\AutoPlurker.exe" 
; 執行該程式時需加上的參數
options = "-daemon"
; 該程式是否會與桌面互動 (即代表該程式執行時若有任何對話框是否應顯示的意思)
desktop = false
; 啟動類型 (可設定的值有 Auto, Manual, Disabled 三種) (預設: Auto)
Start=Auto
; 是否安裝完成後立即啟動 (預設: false) 
StartNow=false
```

3\. 執行以下指令進行安裝

```
ServiceEx install AutoPlurker
```

如果沒有任何錯誤就大功告成啦! 以下安裝成功的畫面圖示：

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7b01e8b1272418b4a209-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/64d21cd463529eeb3e12-image.png)

以下是在 \[控制台\] / \[服務\] 中的畫面圖示：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3bce191f0d29ce3bc12f-image.png)

若要手動啟動服務可在 \[控制台\] / \[服務\] 中啟動或可輸入以下指令啟動：

```
net start AutoPlurker
```

如果要移除安裝，需遵循以下步驟：

1\. 先手動停止服務

```
net stop AutoPlurker
```

2\. 再執行移除服務的指令

```
ServiceEx remove AutoPlurker
```

如果想更新設定檔的內容 (例如更換程式路徑)，需遵循以下步驟：

1\. 先手動停止服務

```
net stop AutoPlurker
```

2\. 再執行移除服務的指令

```
ServiceEx remove AutoPlurker
```

3\. 編輯 AutoPlurker.ini 設定檔

4\. 重新註冊服務

```
ServiceEx install AutoPlurker
```

如果希望程式在意外結束時不想自動重新啟動該程式的話，必須自行修改機碼才行，以下是設定的步驟與注意事項：

1\. 開啟 regedit 機碼編輯器

2\. 瀏覽到以下機碼

```
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<your service name>\Parameters
```

3\. 新增一個 DWORD 類型的鍵值，並取名為 Restart

4\. 設定 Restart 這個鍵值的數值，該數值可設定 0, 1 或 2，分別代表意思如下：

-   0 - 永遠不要讓應用程式重新啟動
-   1 - 當應用程式異常結束時才需重新啟動 ( 當程式結束時的回傳值非為 0 時 )
-   2 -  永遠讓應用程式重新啟動，即便該程式正常結束 \[ 預設值 \]

**相關連結**

-   [ServiceEx - Run Applications as a Service](http://serviceex.com/)
