Psexec在远程计算机上使用非管理员Windows登录的管理员凭据运行应用程序

本文关键字:管理员 登录 Windows 应用程序 运行 计算机 Psexec | 更新日期: 2023-09-27 18:05:51

我知道有很多PsExec问题在那里,但我还没有找到一个回答我的具体情况。就像标题所暗示的,我有一个程序,发送到PsExec我的管理凭据,并使用它们在远程机器上打开一个程序(即calc.exe)。如果我以管理员身份登录Windows并通过PsExec我的管理员凭据,一切工作正常。但是,如果我以非管理员帐户登录Windows并通过PsExec我的管理员凭据,它会给我一个拒绝路径错误的访问。是我做错了什么还是根本不可能?下面是我的代码:

ProcessStartInfo info = new ProcessStartInfo();
info.Argruments = @"''" + computer + " -u " + @"DOMAIN'" + username + " -p " + password + " -i -d -h " + "-accepteula " + processPath + " " + args;
info.FileName = PsExecPath();
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.CreateNoWindow = true;
info.UseShellExecute = false;
Process.Start(info);

Psexec在远程计算机上使用非管理员Windows登录的管理员凭据运行应用程序

在这里找到了我的答案:[https://serverfault.com/questions/489822/psexec-is-not-connecting-to-machine-using-supplied-username-and-password/489845]

失败的原因是"psexec在作为另一个用户执行命令之前,仍然试图使用您的本地凭据访问ADMIN$共享"。

解决方案是在执行PsExec之前在远程机器上缓存您的管理凭据:

cmdkey.exe /add:MACHINE_NAME_HERE /user:MACHINE_NAME_HERE'Administrator /pass:PASSWORD_HERE 
psexec.exe ''MACHINE_NAME_HERE -i notepad
cmdkey.exe /delete:MACHINE_NAME_HERE