如何动态更改NT服务的属性。我正在使用基于Installscript的项目和installshield vesion是11.我想根据特定条件动态更改NT服务属性“允许与桌面交互”。
我试图编写自定义操作,其顺序在InstallService和StartServices之间。此自定义操作正在更改注册表值“类型”的服务。这是一个合适的解决方案?
问候
开发
答案 0 :(得分:0)
既然你问它是否是“正确的”解决方案,我会假设你愿意倾听一些建议。一般来说,创建可与桌面交互的服务是一个非常糟糕的主意(也不是最佳实践)。如果服务被提升为SYSTEM,因为它只是打开一个巨大的actack表面,尤其如此。
普遍接受的最佳做法是将您的UI拆分为自己的应用程序,例如自动启动的托盘应用程序,并对此UI进行编码以与服务组件进行通信。例如,服务创建了一个公开API的WCF端点。这允许您对提升的进程进行沙箱/防火墙,并仅公开用户所需的那些功能。
如果您的开发组织选择忽略所有这些建议,那么形成一个安装程序视角,您正在做的事情将起作用,但不是最佳设计。更好的设计是自定义操作,它在安装时修改ServiceInstall表以更改ServiceType列的值,以便在InstallServices运行时已正确配置它。