C#中通过使用PSEXEC
问题描述:
RDP运行本地程序有没有办法通过RDP运行本地程序 类似的东西:C#中通过使用PSEXEC
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.FileName = @"G:\PSTools\PsExec.exe";
p.StartInfo.Arguments = @"\\tsclient calc.exe";
p.Start();
string output = p.StandardOutput.ReadToEnd();
string errormessage = p.StandardError.ReadToEnd();
p.WaitForExit();
在这种情况下,我得到:
的句柄无效。连接到软件tsclient ......无法访问软件tsclient
感谢
答
最后,我们有PowerShell远程处理。 使用WMI的前两种方法取决于计算机上启用的远程DCOM。这个 可能会也可能不会成为问题,但有时会带来安全风险。 您还可以通过Invoke-Command cmdlet 使用PowerShell远程启动远程计算机上的流程以及通过WSMAN, 这是一个更新,更安全的协议。
为此,我们将结合使用两个cmdlet:Invoke-Command至 使我们能够在远程计算机上运行命令并启动进程以实际执行该进程。
Invoke-Command –ComputerName MEMBERSRV1 –ScriptBlock {Start-Process notepad.exe}
从here
采取同样这是一个SO帖子完全相同的问题:SO
你并不需要运行RDP刚刚启动远程过程。对于远程命令执行有多种图书馆和协议。 我建议阅读链接的SO以获取有关如何执行psExec调用的更多信息。
请更具体地说明你想做什么。现在我将它理解为“我想从本地机器上的远程机器运行程序”。你确定这是你想说的吗? – Nico
你正试图在远程机器上运行某些东西,那么为什么要通过RDP? psexec正是为你做的。如果“tsclient”是远程计算机的名称,那么这将起作用。另外删除cmd.exe,只需直接调用calc.exe(或任何你想要的程序),否则它将无法工作。也许你需要完整的路径名称到你的.exe –