13

我知道过去有人问过这个问题,但尚未提供令人满意的答案。

我正在使用 SC 命令来配置服务的凭据。

SC.exe config "SERVICE NAME" obj= "domain\user" password= "password"

这成功完成,但是当我启动服务时,它无法执行登录。
[ NET START "service name"]

如果我仅手动更新services.msc中的密码,那么当我启动服务时它工作正常。

我有数百台服务器来更新此更改发生在部署中间,因此手动干预不是一种选择。

我尝试使用配置更新登录帐户,然后使用另一个配置命令来更新密码。

从所有帐户来看,SC.exe密码都不起作用,微软也没有帮助。

想法?

4

8 回答 8

8

除了在进行更改之前停止服务并授予用户作为服务登录的权限外,我还必须添加type= own参数,否则会失败:

[SC] ChangeServiceConfig FAILED 87:

The parameter is incorrect

所以这是有效的命令:

SC.EXE config "ServiceName" type= own obj= "domain\user" password= "password"

考虑到我在双括号之间输入了密码,它甚至可以在密码中使用特殊字符。

于 2017-02-08T19:09:27.883 回答
7

当您通过服务属性窗口中的正常路由将服务配置为在特定帐户下运行时,会自动授予该帐户作为服务登录的权限。当您使用 sc.exe 时,您还必须授予用户作为服务登录的权限。

作为服务登录权限

于 2014-04-18T18:33:26.297 回答
2

在重新启动服务之前,您应该授予您的用户作为服务登录的权限。不幸的是,无法使用默认的 windows 工具从命令行执行此操作,但您可以使用Windows Server 2003 Resource Kit Tools中的小型附加 util ntright.exe 。

https://www.microsoft.com/en-us/download/details.aspx?id=17657下载

安装后,您将在C:\Program Files (x86)\Windows Resource Kits\Tools中(或在 32 位机器上的 Program Files 中)获得很多工具。

你需要ntrights.exe。您可以复制它并从另一台主机上的任何位置运行。

要授予您的用户所需的权限,您应该在脚本中添加:

ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%"

之后,您可以使用新用户成功重新启动服务。还有一个选项可以在远程主机上运行 ntrights.exe:

ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%" -m %HOSTNAME%

当我需要远程重新配置大量主机时,这个工具对我很有帮助。

于 2016-09-23T14:57:29.117 回答
1

要通过我编写的脚本启用作为服务登录,您可以按原样使用它或提取对您有用的内容

https://raw.githubusercontent.com/cdaf/windows/master/automation/provisioning/setServiceLogon.ps1

于 2019-12-16T22:27:47.970 回答
0

在设置密码之前尝试停止服务:

sc.exe stop "<my_service>" 4:4:3
sc.exe config "<my_service>" obj= "\.<local_acc_name>" password= "<local_acc_pass>"
sc.exe start "<my_service>"
于 2014-03-23T18:26:47.037 回答
0

我有这个问题。感谢 ST 对原帖的评论,我意识到我需要研究如何输入密码。%%就我而言,我需要将密码中的百分号 ( ) 加倍。

ST 提供的链接很有帮助: 在 cmd 中转义特殊字符

于 2014-12-12T19:58:33.190 回答
0

在执行一些 Powershell 脚本时遇到这个问题,我的问题是密码中的特殊字符。

通过将密码存储在带有双引号的变量中来使其工作:

$servicePassword = "`"passwordWithSpecialCharacters`"" cmd /c sc config myService obj= mydomain\myuser password= $servicePassword

特殊字符有:

()'"$><^?

于 2015-04-08T07:40:44.380 回答
0

尝试这个。开始菜单 - 键入不带引号的“本地安全策略”。打开“本地策略”,然后左键单击“用户权限分配”。在右侧面板上,右键单击“作为服务登录”,然后选择“属性”。单击“添加用户或组”并添加您的用户。单击确定。您可能必须重新启动计算机。

添加后可以在cmd中设置服务的用户名和密码。

于 2016-08-23T15:55:55.430 回答