2011-10-29 23 views
1

如何動態更改NT服務的屬性。我正在使用基於Installscript的項目,並且installshield vesion是11.我想根據某些條件動態更改NT服務屬性「允許與桌面交互」。
我試圖編寫自定義操作,其序列位於InstallService和StartServices之間。此自定義操作正在更改服務的註冊表值「類型」。這是一個合適的解決方案? Registers Dev如何動態更改NT服務屬性

回答

0

既然你問是否是一個「正確」的解決方案,我會假設你願意聽一些建議。一般來說,創建可以與桌面交互的服務是一個非常糟糕的主意(也不是最佳實踐)。如果服務提升爲SYSTEM,因爲它只是打開一個巨大的行動表面,這一點尤其如此。

通常被接受的最佳做法是將您的用戶界面分成它自己的應用程序,例如自動啓動的托盤應用程序,並編寫此用戶界面以與服務組件進行通信。例如,如果服務創建了暴露API的WCF端點。這使您可以對提升的進程進行沙箱/防火牆處理,只顯示用戶需要的那些功能。

如果您的開發組織選擇忽略所有這些建議,然後形成一個安裝程序的角度,你正在做什麼將會工作,但不是最優設計。更好的設計是在安裝時修改ServiceInstall表的自定義操作,以更改ServiceType列的值,以便在InstallServices運行它時已正確配置。