我有一個用C#編寫的標準.NET Windows服務。是否可以在不使用InstallUtil的情況下自行安裝?我應該使用服務安裝程序類嗎?我應該如何使用它?我希望能夠撥打以下電話:MyService.exe -install它與調用具有相同的效果:InstallUtil MyService.exe
3 回答

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