如何使用 psexec 在远程 PC 上使用提升的凭据将 运行 作为服务执行?

How to run exe as a service with elevated credentials on remote PC with psexec?

我正在使用下面的命令(并尝试了很多变体)运行 一个 exe 作为远程 pc 上的不同域用户作为服务(呸!)。

psexec \RemotePC -u admin -p mypass "SC create MyService displayname= "MyService" binpath= "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\MyService.exe" start= auto obj= corp\service_account password= servicepass"

我得到:

PsExec could not start sc create MyService displayname=MyService on RemotePC: The system cannot find the file specified.

我想我可能在错误的地方得到了一些空格或引号,但这让我抓狂。尝试了各种变体,包括启动 cmd.exe 和将 sc 命令作为参数传递。同样的问题。

Windows 7 台 PC 在域环境中。尝试使用 psexec 命令发送本地管理用户凭据,并尝试以域级用户身份执行 sc 命令。

编辑:

试过这个:

c:\SysInternals>psexec \RemotePC -h -u localadmin -p mypass "sc create MyService displayname= \"MyService Name\" binpath= \"C:\ProgramData\Microsoft\Windows\Start Menu \Programs\Startup\MyService.exe\" start= auto obj= corp\service_account password= domainpass"

并得到:

PsExec v2.11 - Execute processes remotely Copyright (C) 2001-2014 Mark Russinovich Sysinternals - www.sysinternals.com

Starting sc create MyService displayname= "MyService Name" binpath= "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\MyService.exe" start= auto obj= corp\service_acc

PsExec could not start on RemotePC: The filename, directory name, or volume label syntax is incorrect.

c:\SysInternals>

喜欢没有评论或理由的反对票...

我自己解决了这个问题,只需删除所有遇到此问题的其他人的引号。

c:\SysInternals>psexec \RemotePC -h -u localadmin -p localpass sc create MyService displayname= MyService binpath= C:\Temp\Script\MyService.exe start= auto obj= corp\domainuser passw
ord= domainpass