所以我有一个部署服务的MSI。
<ServiceInstall Id='ServiceInstall' ErrorControl='ignore' Type='ownProcess' DisplayName='MetricsReportingService' Description='It does metrics reporting' Name='MetricsReportingService' Start='auto' Account='[SERVICEACCOUNT]' Password='[SERVICEACCOUNTPASSWORD]' />
<ServiceControl Id='MetricsReportingService' Remove='uninstall' Name='MetricsReportingService' Start='install' Stop='both' Wait='yes' />
当我在我自己的机器上部署这个服务时,部署工作很好,但是当我在另一个人的机器上部署时,我得到了错误1920,服务无法启动。
现在,我在两台计算机上使用完全相同的服务帐户和密码(该帐户在两台计算机上都具有管理员权限)。实际上,我在两台机器上使用了所有相同的参数,但在一台机器上通过了,而在另一台机器上却失败了。
我没有看到来自我的服务的任何事件日志记录,所以它似乎没有出现在我的代码中。
造成这种差异的可能原因是什么?
发布于 2011-02-23 08:26:31
在为自定义用户帐户安装服务时,您需要确保该帐户具有启动服务的权限(默认情况下它没有这些权限)。一种解决方案是通过使用ntrights.exe作为自定义操作来设置这些权限:http://support.microsoft.com/kb/315276
例如,您可以使用以下命令行:
ntrights.exe -u [SERVICEACCOUNT] +r SeServiceLogonRight
您还可以尝试使用通过自定义代码设置权限的DLL自定义操作。此自定义操作应在安装服务之前运行。
发布于 2013-11-22 11:59:27
在我的例子中,我还必须向user添加用户权限。我用自定义操作和this code做到了这一点。它不需要在Win8和Server2008 R2上添加用户权限就可以工作。它在Win 7或Win XP上不起作用。希望能有所帮助。
https://stackoverflow.com/questions/5085594
复制