使用SC.exe设置服务凭据密码失败

时间:2013-01-18 22:55:44

标签: windows command-line windows-services

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

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

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

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

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

我有数百台服务器来更新在部署过程中发生的这种变化, 所以人工干预不是一种选择。

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

从所有帐户中,SC.exe不适用于密码,Microsoft没有任何帮助。

IDEAS?

8 个答案:

答案 0 :(得分:6)

除了stopping the service进行更改之前,granting the user permission to logon as a service,我还必须添加type= own参数,否则会失败:

[SC] ChangeServiceConfig FAILED 87:

The parameter is incorrect

所以这是有效的命令:

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

它甚至可以使用密码中的特殊字符,因为我有双括号之间的密码。

答案 1 :(得分:3)

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

Log On As Service Right

答案 2 :(得分:1)

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

提供的链接ST非常有用:Escaping special characters in cmd

答案 3 :(得分:1)

在重新启动服务之前,您应该授予您的用户作为服务登录的权限。 遗憾的是,无法通过命令行使用默认的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资源工具包\工具(或32位计算机上的程序文件)中获得大量工具。

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

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

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

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

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

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

答案 4 :(得分: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>"

答案 5 :(得分:0)

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

通过将密码存储在带有双引号的变量中来实现它:

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

特殊字符是:

()'"$><^?

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

要启用通过我编写的脚本作为服务登录,您可以按原样使用它,也可以退出对您有用的东西

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