介紹
通常,NT服務是控制台應用程式,它沒有訊息迴圈。不必等到使用者 登陸電腦,NT服務便能啟動,並且在使用者登出之後,它也不會停止運行。然而, 許多現存的ActiveX控制項很難,有時候根本不可能在控制台程式中使用。
另一方面,MFC和VB程式都是Windows應用程式,所以在MFC或VB程式中使用 ActiveX控制項相當簡單。要是能使MFC和VB程式像NT服務一樣運行就不錯了:
• 在使用者登陸電腦之前就啟動
• 在使用者登出電腦之 後繼續運行
可以用Windows程式的形式直接寫NT服務,但是本文要提供一 個更簡單的解決方案。本文配套原始碼是一個簡單的NT服務程式,它能夠啟動和 關閉其它程式。所有你需要做的是安裝這個服務,修改.ini檔案。下面是使用此 NT服務的好處。
• 它能夠啟動你指定的任意多個程式。被啟動的 程式將像 NT 服務一樣運行(例如,不用使用者登陸機器,它們便會在後台運行) 。
• 在沒有合適特權情況下,使用者不能終止由此服務啟動的程式 (除非機器關閉)。
• 你可以在 NT 服務之外測試和調試你的程 序。例如,你可以在 DevStudio 調試器中運行你的程式,單步進入原始碼中查 找錯誤等。當“調試無錯”後,你將它配置成產品,從 NT 服務啟動 它。
XYNTService
XYNTService.exe是此NT服務程式可執行檔的名字 。它是我研發的客戶-伺服器開發工具的一部分。你可以免費使用和修改本文包 含的原始碼。我知道也有其它的工具提供和XYNTService幾乎相同的功能。然而 ,如你所見,XYNTService擁有更多的特性,並且更容易使用(例如,不需要編 輯註冊表)。下面顯示了如何使用此程式。
• 為了安裝(install )服務,在命令提示字元下運行下面命令:XYNTService -i
• 為了 卸載(un-install)服務,在命令提示字元下運行下面命令:XYNTService - u
預設情況下,在電腦重啟時,安裝的服務便會自動啟動。你也可以使用 服務表徵圖從控制台啟動和關閉服務。服務啟動時,它將會一個挨一個地建立在 XYNTService.ini檔案中定義的所有進程。服務關閉時,它將會終止這些進程( 以相反順序)。XYNTService.ini檔案應該和可執行檔放在相同的目錄。下面 是此檔案的一個例子。
[Settings]
ServiceName = XYNTService
ProcCount = 3
CheckProcess = 30
[Process0]
CommandLine = c:\MyDir\XYRoot.exe
WorkingDir = c:\MyDir
PauseStart = 1000
PauseEnd = 1000
UserInterface = Yes
Restart = Yes
[Process1]
CommandLine = c:\MyDir\XYDataManager.exe
WorkingDir = c:\MyDir
PauseStart = 1000
PauseEnd = 1000
UserInterface = Yes
Restart = Yes
[Process2]
CommandLine= java XYRoot.XYRoot XYRootJava.ini
UserInterface = No
Restart = No