在.NET中运行DOS命令

时间:2009-08-06 00:03:25

标签: c# .net dos

我有一组命令,如:

C:
cd Project
testproj.exe

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

我还需要将testproj.exe的结果返回给远程机器。运行命令后如何获取结果?

5 个答案:

答案 0 :(得分:6)

Process.Start cmd.exe,并挂钩StandardIn,StandardOut和StandardError。然后,当一个命令进来时,只需将其写入StandardIn并读取StandardOut / Error作为返回。整件事不应超过15 LOC。

话虽这么说,只是安装Telnet服务器可能会更容易 - 因为它听起来就是你基本上复制的......

答案 1 :(得分:5)

var process = System.Diagnostics.Process.Start( "testproj.exe" );
process.WaitForExit();
var result = process.ExitCode;

这不会真正尊重“C:”或“CD路径”之类的东西。相反,您需要在临时文件夹中创建批处理文件,然后调用批处理文件。

答案 2 :(得分:4)

看看System.Diagnostics.Process。您可以在某处重定向stdout / stderr以获取输出。

答案 3 :(得分:1)

C: cd Project 操作可以使用目录类在 SetCurrentDirectory 中在局域网应用程序内完成强>方法。

然后只需使用进程类启动 testproj.exe 可执行文件。

答案 4 :(得分:1)

不要试图支持DOS的所有命令,只需要实现一个小子集,这样可以保证什么都不会出错。喜欢不允许DELETE,RD,FORMAT等。

所以,基本上你只有DOS命令的子集。获得命令集后,可以使用扩展机制或可插拔模块对这些特定命令进行编码。

这也可以帮助您安全地保护您的计算机免受恶意攻击,最糟糕的情况是发送数据但是从机器发出,数据/系统永远不会受到损害。

更新:具体命令的实现由您自己决定。您可以使用.NET API或具有System.Diagnostics.Process