如何通过命令行设置Windows服务的用户名和密码

48

使用sc命令,我们可以查询、启动、停止Windows服务。
例如:

sc query "windows service name"
sc config命令可以更改服务的配置,但我不知道如何使用它。 请问有人能告诉我如何为任何Windows服务设置用户名和密码吗?
2个回答

101

这样做是有效的:

sc.exe config "[servicename]" obj= "[.\username]" password= "[password]"

其中每个[括号]项都应替换为真实的参数(保留引号,但不保留括号)。

请记住:

  • 上面示例中的空格很重要。obj= "foo"是正确的;obj="foo"是错误的。
  • '.'是本地计算机的别名,如果需要,您可以在那里指定域(或本地计算机名称)。
  • 密码只有在服务启动后才会验证。
  • 像上面一样用引号引用您的参数。有时可能可以不用引号,但祝你好运。

7
安德鲁,稍作修改后它就可以工作了。obj =“domain\username” obj =“LocalSystem”,我们在obj=和用户名之间必须有空格。用户ID得到验证,这很好。在实际密码和password=之间必须要有空格。密码没有得到验证,这有点痛苦。要将服务重新设置为LocalSystem,需要提供一些虚假密码才能使其正常工作。例如:sc config "servicename" obj =“LocalSystem” password =“notused”。 - sundar venugopal
3
这也不起作用。使用 SC config service obj= "service name" password= "password" 命令不能正确设置密码,因此无法启动该服务。 - Grayson
2
@Jeremy 在PowerShell中,“sc”是Set-Content的别名。使用& sc.exe代替,就不会有冲突了。 - Jude Allred
5
如果该服务已经设置了"与桌面交互",您将会收到错误代码87。为了避免这种情况:sc.exe config "ServiceName" obj= "USER@DOMAIN" password= "MyPassword" TYPE= own(https://support.microsoft.com/en-us/kb/264663) - Chris S
1
@OmairNabiel 正如 Rich K 在这个帖子中所说 https://dev59.com/62Yq5IYBdhLWcg3whRDV "当您通过服务属性窗口的正常路径配置服务以在特定帐户下运行时,自动授予该帐户登录为服务权限。当您使用 sc.exe 时,您还必须授予用户登录为服务权限。" - Mark Willis
显示剩余2条评论

9
在PowerShell中,“sc”命令是Set-Content cmdlet的别名。您可以使用以下语法解决此问题:
sc.exe config Service obj= user password= pass

通过指定 .exe 扩展名,PowerShell 跳过别名查找。
希望这能帮到您。

它对我不起作用。我想知道这种方法是否支持除字母数字以外的其他字符。 - Maverick
可以在sc命令行前面加上“cmd /c”,这样PowerShell就会在CMD中运行它。 - KERR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接