尝试使用此批处理脚本Service1
将服务配置windows 7 sp1
为以用户user1
身份使用密码登录:password1
net user user1 /delete
net user user1 password1 /add
net localgroup administrators user1 /add
wmic useraccount where "Name='user1'" set PasswordExpires=false
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v user1 /t REG_DWORD /d 0 /f
net stop "Service1"
sc config "Service1" start= delayed-auto type= own obj= ".\user1" password= "password1"
net start "Service1"
失败:Error 1069: The service did not start due to a logon failure.
但使用 UI 设置用户和密码没有任何错误。
答案1
通过在脚本中添加此行可以解决问题
ntrights.exe +r SeServiceLogonRight -u user1
C:\Program Files (x86)\Windows Resource Kits\Tools\ntrights.exe
从这里安装关联
答案2
鉴于这看起来与身份验证有关,我会仔细检查用户名模式的格式等内容,是否有“拒绝登录服务”的策略,并通过查看批处理文件检查尝试登录并启动服务的用户帐户的权限。
添加有关 1069 错误的信息。 有一个很好的 stackoverflow 帖子也涵盖了这一点。
看起来有一个类似的发布此帖子以编辑 Windows 服务,使用批处理脚本以指定用户身份登录这也许能帮助你到达你需要去的地方。
根据原始答案,它正在使用sc \\server config ServiceName obj= Domain\user password= pass
并且看起来应该对您要做的事情进行排序,但我想在我的开发环境中对此进行健全性检查,只要我有时间并且可以追回。
一个替代方案可能是使用sc config "Service Name" obj= LocalSystem
,与上面的类似。
浏览另一篇帖子,与权利也可能有帮助,这取决于用例中任何不可预见的变量。ntrights +r SeServiceLogonRight -u username -m \\%COMPUTERNAME%
如果你使用PowerShell 并希望利用加密密码,您可以走那条路,但前面的两个例子似乎与您尝试做的事情很接近。
2023 年 6 月 4 日更新:旧的 Microsoft URL (http://support.microsoft.com/kb/315276) 详细说明了截至目前的 ntrights 404。感谢 Dennis 的提醒评论!将其替换为 SS64 的页面作为下一个最佳连续性手段。