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

Windows 使用SC.exe设置服务凭据密码失败,windows,command-line,windows-services,Windows,Command Line,Windows Services,我知道过去有人问过这个问题,但没有提供令人满意的答案 我正在使用SC命令配置服务的凭据 SC.exe config "SERVICE NAME" obj= "domain\user" password= "password" 这将成功完成,但当我启动服务时,它失败了 执行登录。 [网络启动“服务名称”] 如果我仅从services.msc手动更新密码,则 当我开始服务时,它工作正常 我有数百个服务器来更新这个更改,在部署的中间出现, 因此,人工干预不是一种选择 我尝试使用config更新登录帐

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

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

SC.exe config "SERVICE NAME" obj= "domain\user" password= "password"
这将成功完成,但当我启动服务时,它失败了 执行登录。
[
网络启动“服务名称”
]

如果我仅从services.msc手动更新密码,则 当我开始服务时,它工作正常

我有数百个服务器来更新这个更改,在部署的中间出现, 因此,人工干预不是一种选择

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

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


想法?

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

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>"
sc.exe停止“4:4:3”
sc.exe配置“obj=“\”密码=“”
sc.exe启动“”

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


我有这个问题。多亏了ST在原始帖子上的评论,我意识到我需要研究如何输入密码。在我的例子中,我需要将密码中的百分号(
%%
)加倍


ST提供的链接很有帮助:。

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

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


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

特殊字符包括:

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


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

在重新启动服务之前,您应该授予用户作为服务登录的权限。 遗憾的是,使用默认windows工具无法从命令行执行此操作,但您可以使用windows Server 2003资源工具包工具中的其他小util ntright.exe

从下载

安装后,您将在C:\Program Files(x86)\Windows Resource Kits\tools(或32位计算机上的程序文件)中获得大量工具

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

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

ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%"
之后,您可以使用新用户成功地重新启动服务。 此外,还有一个在远程主机上运行ntrights.exe的选项:

ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%" -m %HOSTNAME%
当我需要远程重新配置许多主机时,此工具对我非常有帮助。

除了在进行更改之前,我还必须添加
type=own
参数,否则它将失败:

[SC] ChangeServiceConfig FAILED 87:

The parameter is incorrect
这就是有效的命令:

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

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

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


密码是否包含任何特殊字符,如(,),“,”,$,>,我可以使用sc.exe多次设置密码。你只需要把密码编好就行了。除了“@”和“&”之外,还有其他特殊字符吗?例如,“%”需要特殊处理: