我使用C#和控制台程序来创建一个新的cmd进程,没有重定向stdin或stdout,所以我可以从这里输入命令行。 (我从那里使用telnet时遇到了麻烦,所以这一步只是一次调查。) 能够输入窗口并接收输出。 当我切换到c:Windows \ system32时,输入dir te * .exe不显示任何内容。 在我直接创建的另一个命令提示符中,我看到了文件(telnet.exe)。 关于什么是错的任何建议?
{
ProcessStartInfo startInfo = new ProcessStartInfo(@"cmd.exe");
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.CreateNoWindow = false;
startInfo.Arguments = host;
using (Process p = new Process())
{
p.StartInfo = startInfo;
p.Start();
}
}
答案 0 :(得分:3)
我相信,自Windows 7以来,您必须将Telnet安装为Windows功能。
Here您有一个在Win 7上启用Telnet的指南,但它适用于Win 8.1和Windows 10。
万一您无法阅读该网站,步骤如下:
转到“控制面板” - >程序 - >打开或关闭Windows功能 - >向下滚动,直到找到Telnet客户端选项
答案 1 :(得分:0)
基于上面的文章,查看了项目构建属性。 平台目标设置为x86。 改为"任何CPU"至少让我看到这个节目!
BTW我在发布这个帖子之前已经找了几天的答案了,但是在相关的边缘 - " C#创建的新进程无法访问某些文件"在我创建这个问题之后给了我信息
谢谢,启发式!
答案 2 :(得分:0)
这是一个非常狡猾的人。当您使用Windows资源管理器或直接打开命令提示符时,您正在启动64位进程。当您使用Process.Start()
启动“cmd.exe”时,您将获得与启动它的进程相同的版本。在您的情况下,您正在创建一个32位进程,因此您将获得32位版本的命令提示符。如果您将项目更改为创建目标x64,您将看到文件!
为什么会这样?因为,根据您是通过32位还是64位应用程序访问System32,您实际上将访问不同的 System32文件夹!有关详细信息,请点击此链接: