网络上的命令行控制

时间:2012-08-13 15:44:52

标签: c# c++ windows linux remote-access

有没有办法远程访问另一台PC并使用它的命令行完全访问?

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

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

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

我有什么选择?

3 个答案:

答案 0 :(得分:2)

远程命令行?

我使用PSEXEC中的sysinternals就像这样:

psexec \\machinename cmd.exe

无法轻松

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

答案 1 :(得分:0)

我从来没有在Linux中试过这个,但它在完整的Windows环境中起到了作用。查看远程计算机上的PowerShell远程处理。您可以通过Linux机箱上的C#MONO连接到远程计算机,但我不确定MONO中是否提供了正确的类。

答案 2 :(得分:0)

也许我误解了你,但你总是可以在Windows机器上实现一个C#客户端,它使用IPC从命令提示符发送输入和读取输出,并且你有一个C ++ / mono C#/ netcat服务器在运行在Linux上。客户端将来自流的所有内容转换为字符串并将其写入命令提示符,然后获取输出并将其写入流。 由Code Project提供: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);
}