2

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

调用本身很简单:

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

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

提前致谢。

4

1 回答 1

1

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

关于需要完全限定用户名,我也有一些模糊的模糊记忆。它需要采用DOMAIN\Username格式 - 如果它是本地帐户,您需要指定.\Username或找出机器名称并使用MACHINENAME\Username

于 2008-10-01T00:34:40.883 回答