我正在自行安装软件。有一个正在运行的Windows服务,可以通知有软件更新。那时,它将下载我的刻录exe并执行process.start以静默方式安装它。除了一个问题之外,安装程序按预期工作 - 由于登录失败,它安装的服务将无法启动。如果我更改了服务中的服务密码,该服务将启动,因此我相信该问题可以解决服务帐户密码问题。这就是问题 - 如果我从交互式桌面(登录用户)在完全相同的机器上运行完全相同的安装程序,它就可以工作!
以下是我安装的服务之一:
<ServiceInstall
Id="DataAcquisitionInstaller"
Type="ownProcess"
Name="DataAcquisitionService"
DisplayName="Data Acquisition Service"
Description="Handles all data acquisitions"
Start="demand"
Account="[SERVICEACCOUNTUSERID]"
Password="[SERVICEACCOUNTPASSWORD]"
ErrorControl="normal"
>
<util:PermissionEx
User="[SERVICEACCOUNTUSERID]"
GenericAll="yes"
ServiceChangeConfig="yes"
ServiceEnumerateDependents="yes"
ChangePermission="yes"
ServiceInterrogate="yes"
ServicePauseContinue="yes"
ServiceQueryConfig="yes"
ServiceQueryStatus="yes"
ServiceStart="yes"
ServiceStop="yes" />
<ServiceConfig DelayedAutoStart="yes" OnInstall="yes" OnReinstall="yes"/>
</ServiceInstall>
我已在日志中验证了SERVICEACCOUNTUSERID和SERVICEACCOUNTPASSWORD是否正确。我能在日志中看到的唯一区别是:
从服务安装时:
MSI(s)(30:80)[10:05:28:905]:执行操作: ServiceInstall(名称= DataAcquisitionService,显示名称=数据 采集服务,ImagePath =“C:\ Program Files (86)\ XXX \ XXX \服务\ DataAcquisitionService.exe”,服务类型= 16,StartType = 3,ErrorControl = 1,...,依赖= [〜]的 [〜],TAGID = 0 下,StartName = \测试,密码= **********,描述=把手 所有数据采集, SecurityDescriptor = BinaryData ,)
以登录用户身份从交互式桌面安装
MSI(s)(44:E8)[09:45:57:518]:执行操作: ServiceInstall(名称= DataAcquisitionService,显示名称=数据 采集服务,ImagePath =“C:\ Program Files (86)\ XXX \ XXX \服务\ DataAcquisitionService.exe”,服务类型= 16,StartType = 3,ErrorControl = 1,...,依赖= [〜] ,, StartName = \测试,密码= ******* ***,描述=把手 所有数据采集,)
这是什么意思 - &gt; “SecurityDescriptor = BinaryData”?这是导致我的问题的原因,如果是,我该如何解决?
感谢。