在.NET中运行DOS命令

3

我有一组类似以下的命令:

C:
cd Project
testproj.exe

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

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

5个回答

6

Process.Start 启动 cmd.exe,并钩取 StandardIn、StandardOut 和 StandardError。然后,当命令进来时,只需将其写入 StandardIn 并读取 StandardOut/Error 以获取返回值。整个过程不应超过15行代码。

话虽如此,安装 Telnet 服务器可能更容易 - 因为这似乎是您要复制的内容....


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

这并不会识别"C:"或"CD路径"之类的内容。相反,您应该在临时文件夹中创建批处理文件,然后调用该批处理文件。


2
这样不行。你需要使用 process.WaitForExit() 来获取 ExitCode。 - Adam Robinson

4

1

在启动应用程序中,可以使用Directory类的SetCurrentDirectory方法来执行C:cd Project操作。

然后,只需使用Process类来启动testproj.exe可执行文件。


1

不要试图支持DOS的所有命令,只需实现一个小的子集即可保证不会出错。比如不允许使用DELETE、RD、FORMAT等命令。

因此,您只需要拥有DOS命令的子集。一旦您拥有了命令集,就可以使用扩展机制或可插拔模块为这些特定的命令编写代码。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接