我知道这个问题已经被问过去,但一个满意的答复尚未提供。
我使用SC命令来配置一个服务的凭证。
SC.exe config "SERVICE NAME" obj= "domain\user" password= "password"
这成功完成,但是当我启动服务,它未能执行登录。
[ NET START "service name"
]
如果我手动从SERVICES.MSC只更新密码,然后当我启动该服务正常工作。
我有数百台服务器的更新在部署过程中发生这种变化,所以人工干预是不是一种选择。
我一直在使用的配置,更新密码的登录帐户,然后又config命令尝试。
从所有帐户的SC.exe
不口令工作,微软有没有帮助。
想法?
除了停止该服务进行更改,而之前授予作为服务登录的用户权限 ,我也不得不添加type= own
参数,否则会失败:
[SC] ChangeServiceConfig FAILED 87:
The parameter is incorrect
因此,这是工作的命令:
SC.EXE config "ServiceName" type= own obj= "domain\user" password= "password"
它甚至与密码特殊字符的工作,因为我有双括号之间的密码。
当你配置一个服务通过从服务属性窗口的正常路线在特定帐户下运行自动授予登录帐户作为服务的权利。 当您使用SC.EXE你还必须正确授予该用户作为服务的日志。
作为服务登录权
我有这个问题。 2009年,由于原帖ST的评论,我意识到我需要研究如何键入密码。 就我而言,我需要加倍百分号( %%
的密码)。
ST提供的链接是有帮助的: 在cmd中转义特殊字符 。
重新启动服务之前,您应该授予作为服务登录的用户权限。 不幸的是,没有办法从默认的Windows工具命令行做到这一点,但你可以用小笔额外UTIL从Windows Server 2003 Resource Kit工具 ntright.exe。
从下载https://www.microsoft.com/en-us/download/details.aspx?id=17657
安装完成后,你会得到一个在C很多工具:\程序文件(x86)\ Windows资源工具包\工具 (或程序文件32位机器上)。
你需要Ntrights.exe的 。 您可以复制它,并从另一台主机上的任何地方运行。
要授予用户所需的权限,你应该添加到您的脚本:
ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%"
之后,你可以成功地重新启动服务,一个新的用户。 也有到远程主机上运行的Ntrights.exe的选项:
ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%" -m %HOSTNAME%
这个工具可以帮助我非常多的时候,我需要远程重新配置大量的主机。
尝试设置密码之前停止服务:
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>"
同时做一些PowerShell脚本对这个问题跑在我的情况的问题是在密码中的特殊字符。
得到它的工作通过用双引号括起来的变量存储的密码:
$servicePassword = "`"passwordWithSpecialCharacters`"" cmd /c sc config myService obj= mydomain\myuser password= $servicePassword
特殊字符是:
()'"$><^?
试试这个。 开始菜单 - 输入“本地安全策略”不带引号。 打开“本地策略”,然后在“用户权利指派”左击。 在右侧面板上,在“日志上作为服务”,并选择“属性”,单击鼠标右键。 点击“添加用户或组”,并添加您的用户。 单击确定。 您可能需要重新启动计算机。
加入后,您可以在CMD服务中设定的用户名和密码。