如何从命令行更改Windows服务的用户凭据?

时间:2009-06-08 19:00:11

标签: command-line windows-services

如何从命令行更改Windows服务的用户凭据?

4 个答案:

答案 0 :(得分:60)

sc.exe config "Service Name" obj= "DOMAIN\User" password= "password"

请参阅Shortcut Setting Log-On Credentials for Windows Services » jonathanmalek.com

@MattT指出,在Windows Server 2008R2上,您还必须添加type= own

答案 1 :(得分:9)

我只是从powershell调用WMI来执行此操作。

$Svc = Get-WmiObject win32_service -filter "name='ServiceName'"
$Svc.Change($Null, $Null, $Null, $Null, $Null, $Null, "User", "Password")

不要忘记之后重启服务:

Stop-Service -Name 'ServiceName'
Start-Service -Name 'ServiceName'

有关WMI和服务的更多乐趣,请参阅 Win32_Service Class

答案 2 :(得分:2)

使用WMI会导致您的计算机与正在更改服务凭据的计算机之间的非加密通信。因此,您的新密码可以很容易地被嗅探。您只需解析通过网络发送的WMI blob。到目前为止,我找不到使用工具远程更改服务帐户密码的真正安全方法。

答案 3 :(得分:0)

对于那些想知道如何通过安全密码的人:

$credentials = Get-Credential -UserName 'Domain\username' -Message 'Enter password below'
$service = Get-WmiObject win32_service -filter "name='SERVICE_NAME'"
$service.Change($null,$null,$null,$null,$null,$null,$credentials.username,($credentials.Password | ConvertFrom-SecureString))