代码之家  ›  专栏  ›  技术社区  ›  blitzkriegz

在.NET中运行DOS命令

  •  3
  • blitzkriegz  · 技术社区  · 17 年前

    我有一组命令,比如:

    C:
    cd Project
    testproj.exe
    

    我的系统从远程系统中逐个获取这些命令。 我需要在从远程系统接收命令时执行cmd.exe中的每个命令。如何使用.NET执行这些操作?

    我还需要将testproj.exe的结果返回到远程计算机。运行命令后如何取得结果?

    5 回复  |  直到 17 年前
        1
  •  6
  •   Mark Brackett    17 年前

    Process.Start 以及hook standardin、standardout和standarderror。然后,当一个命令进入时,只需将其写入StandardIn并读取StandardOut/Error以返回。整件事不应该超过15个地点。

    也就是说,仅仅安装telnet服务器可能会更容易——因为听起来这就是您实际上要复制的内容……

        2
  •  5
  •   Paul Alexander    17 年前
    var process = System.Diagnostics.Process.Start( "testproj.exe" );
    process.WaitForExit();
    var result = process.ExitCode;
    

    这不会真正尊重像“c:”或“cd路径”这样的事情。相反,您希望在临时文件夹中创建一个批处理文件,然后调用该批处理文件。

        3
  •  4
  •   elan    17 年前

    看一看 System.Diagnostics.Process . 您可以将stdout/stderr重定向到某个地方以获取输出。

        4
  •  1
  •   jussij    17 年前

    这个 丙: 光盘工程 可以在Lanching应用程序内部使用 号码簿 类使用 设置当前目录 方法。

    那就用 过程 类以启动 测试项目 可执行的。

        5
  •  1
  •   Ramesh César Landesa    17 年前

    不要试图支持DOS的所有命令,只需要实现一个小的子集,它将保证不会出错。例如不允许删除、RD、格式等。

    所以,基本上您只需要DOS命令的一个子集。一旦设置了命令集,就可以使用扩展机制或作为可插入模块为这些特定的命令进行编码。

    这也将帮助您保护您的机器免受恶意攻击,最糟糕的情况是可能会有数据发送出去,但从机器发送出去的数据/系统永远不会受到伤害。

    更新:具体命令的实现留给您。您可以使用.NET API或使用System.Diagnostics.Process

    推荐文章