ChangeServiceConfig问题设置登录凭据

时间:2020-03-06 14:57:19  来源:igfitidea点击:

我遇到了一个奇怪的问题,我在新安装的服务(我自己为" CreateService")上调用ChangeServiceConfig以提供登录凭据,但是如果函数成功(返回TRUE),则尝试启动该服务,它失败并显示1069(登录失败)。如果我进入服务管理器并手动修改凭据(我可以看到用户名正确,但是当然看不到密码),那么一切都很好,并且可以正常启动。

这个电话本身是微不足道的:

ChangeServiceConfig(hService,SERVICE_NO_CHANGE,SERVICE_NO_CHANGE,SERVICE_NO_CHANGE,NULL,NULL,NULL,NULL,strUser,strPassword,NULL);

关于我应该去哪里寻找什么以及可能出什么问题的任何想法?

提前致谢。

解决方案

用户帐户必须明确具有作为服务登录的权限(SeServiceLogonRight)。许多用户(包括计算机管理员)可能未设置此标志,因此我们可能需要手动设置。当我们使用Windows服务控制面板配置服务时,它实际上是在后台默默地执行此操作。

关于需要完全限定用户名,我也有一些模糊的模糊记忆。它必须为" DOMAIN \ Username"格式。如果是本地帐户,则需要指定"。\ Username"或者找出计算机名称并使用" MACHINENAME \ Username"