0

有什么方法可以远程访问另一台 PC 并以完全访问权限使用它的命令行?

我正在尝试开发一个可以通过命令行完全控制其所有客户端的服务器。

它将是一个 ubuntu 服务器,但所有客户端都是 Windows 7 Pro x64。

我希望能够在 VC# .Net 3.5 中编写此脚本,但作为最后的手段,我会在 C++ 中编写。

我有哪些选择?

4

3 回答 3

2

远程命令行?

我使用来自sysinternals的PSEXEC就像这样:

psexec \\machinename cmd.exe

再简单不过了

抱歉 - 我显然错过了需要从 linux 控制它的一点。

于 2012-08-13T15:49:38.147 回答
0

我从未在 Linux 中尝试过这个,但它在完整的 Windows 环境中很有用。查看远程计算机上的 PowerShell Remoting。您可能能够通过 Linux 机器上的 C# MONO 连接到远程机器,但我不确定 MONO 中是否还提供适当的类。

于 2012-08-13T16:02:25.640 回答
0

也许我误解了你,但你总是可以在 Windows 机器上实现一个 C# 客户端,它使用 IPC 从命令提示符发送输入和读取输出,你会有一个在 Linux 上运行的 C++/mono C#/netcat 服务器。客户端将来自流的所有内容转换为字符串并将其写入命令提示符,然后获取输出并将其写入流。代码项目的礼貌:http: //www.codeproject.com/Articles/20250/Reverse-Connection-Shell

cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.CreateNoWindow = true;
        cmd.StartInfo.UseShellExecute = false;
        cmd.StartInfo.RedirectStandardOutput = true;
        cmd.StartInfo.RedirectStandardInput = true;
        cmd.StartInfo.RedirectStandardError = true;
        cmd.OutputDataReceived += new
        DataReceivedEventHandler(CmdOutputDataHandler);
        cmd.Start();
        cmd.BeginOutputReadLine();

public void CmdOutputDataHandler(object sendingProcess,
    DataReceivedEventArgs cmdout)
    {                         
                output.Append(cmdout.Data);
                writer.WriteLine(output);
                writer.Flush();                

    }

// Run this in a separate thread to prevent blocking
while (true)
{
input.Append(reader.ReadLine());
input.Append("\n");
cmd.StandardInput.WriteLine(input);
input.Remove(0, input.Length);
}
于 2012-08-13T16:52:21.700 回答