3 回答

TA貢獻1851條經(jīng)驗 獲得超4個贊
盡管涉及的工作量是不平凡的,但您總是可以退回到舊的WinAPI調(diào)用中。不需要通過支持.NET的機制來安裝.NET服務(wù)。
安裝:
通過打開服務(wù)管理器
OpenSCManager
。致電
CreateService
注冊服務(wù)。(可選)調(diào)用
ChangeServiceConfig2
以設(shè)置描述。關(guān)閉服務(wù),并使用來關(guān)閉服務(wù)管理器句柄
CloseServiceHandle
。
卸載:
通過打開服務(wù)管理器
OpenSCManager
。使用打開服務(wù)
OpenService
。通過調(diào)用
DeleteService
返回的句柄來刪除服務(wù)OpenService
。關(guān)閉服務(wù),并使用來關(guān)閉服務(wù)管理器句柄
CloseServiceHandle
。
與使用ServiceInstaller
/相比ServiceProcessInstaller
,我更喜歡這樣做的主要原因是您可以使用自己的自定義命令行參數(shù)注冊服務(wù)。例如,您可以將其注冊為"MyApp.exe -service"
,然后如果用戶在沒有任何參數(shù)的情況下運行您的應(yīng)用,則可以為他們提供一個UI以安裝/刪除該服務(wù)。
運行Reflector ServiceInstaller
可以填寫此簡要說明中缺少的詳細信息。
PS顯然,這不會具有與調(diào)用:InstallUtil MyService.exe相同的效果-特別是,您將無法使用InstallUtil進行卸載。但這似乎并不是對您的嚴格要求。
- 3 回答
- 0 關(guān)注
- 658 瀏覽
添加回答
舉報