我有一组命令,如:
C:
cd Project
testproj.exe
我的系统从远程系统逐个获取这些命令。 我需要在从远程系统接收命令时执行cmd.exe中的每个命令。如何使用.NET执行这些?
我还需要将testproj.exe的结果返回给远程机器。运行命令后如何获取结果?
答案 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