C++ 在自动化服务部署时,设置用户服务运行的最佳实践是什么?

C++ 在自动化服务部署时,设置用户服务运行的最佳实践是什么?,c++,windows,deployment,service,automation,C++,Windows,Deployment,Service,Automation,我们正在尝试自动化我们创建的一些服务的部署。我们不希望将用户名和密码硬编码到应用程序安装程序中。不硬编码用户名和登录名的问题在于,它会使发布的自动化出现问题 您将如何在msi中打包windows服务,以便: 根据环境实例的不同,服务安装为在特定用户名下运行。i、 e.在生产中,它在域\名\生产服务用户下运行,但如果我们将同一服务部署到暂存中,则服务在域\名\暂存服务用户下运行 如果通过“添加/删除程序”卸载该服务,则该服务将被删除 要自动安装和卸载该服务,您可以使用Windows Install

我们正在尝试自动化我们创建的一些服务的部署。我们不希望将用户名和密码硬编码到应用程序安装程序中。不硬编码用户名和登录名的问题在于,它会使发布的自动化出现问题

您将如何在msi中打包windows服务,以便:

根据环境实例的不同,服务安装为在特定用户名下运行。i、 e.在生产中,它在域\名\生产服务用户下运行,但如果我们将同一服务部署到暂存中,则服务在域\名\暂存服务用户下运行

如果通过“添加/删除程序”卸载该服务,则该服务将被删除


要自动安装和卸载该服务,您可以使用Windows Installer支持:

Visual Studio安装项目不支持服务表。因此,如果您正在使用它,您将需要编写、安装和卸载管理该服务的自定义操作。其他设置编写工具提供对服务的直接支持

要动态设置服务帐户,您可以使用自定义帐户,例如服务帐户。在安装过程中,您可以将此属性设置为所需的帐户。这可以通过多种方式完成:自定义操作、对话框控件、命令行等


只有为自定义用户帐户设置了,服务才能在自定义用户帐户下运行,即使它是管理员帐户也是如此。此策略可以在安装过程中作为自定义操作设置。

我应该更清楚。这是一个非托管C++服务。我想我们可以有一个C库项目来执行服务安装,但是自定义操作存在一些问题,因为出于某种原因,MS认为让自定义操作不以执行安装的用户的身份运行是个好主意。我不确定我是否理解这与我的建议背道而驰。如果要使用Visual Studio,唯一的解决方案是自定义操作。如果您不想使用自定义操作,则不能使用Visual Studio。您需要另一个支持服务的安装创作工具。自定义操作很好,我们正在使用它们,但我想问的是,如果希望服务在特定用户帐户下运行,如何自动部署msi。基本上,您可以通过自定义操作设置服务用户帐户,并使用ntrights.exe将该帐户的登录设置为服务策略。没有什么比这更需要自动化了。就像我提到的,VisualStudio不支持这个,所以你只能手工操作。我不知道你明白什么。我们已经在使用自定义操作来实现这一点,而且效果很好。问题是,如果我们想自动将服务设置为在用户帐户下运行,就必须将用户名和密码硬编码到安装程序中。