C# cmd 提示符看不到 telnet.exe
本文关键字:telnet exe 看不到 提示符 cmd | 更新日期: 2023-09-27 17:57:04
我将 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();
}
}
我相信,从Windows 7开始,你必须将Telnet安装为Windows功能。
在这里,您有一个在Win 7上启用Telnet的指南,但它适用于Win 8.1以及Windows 10。
以防万一您无法阅读该网站,步骤如下:
转到控制面板 ->程序 -> 打开或关闭 Windows 功能 -> 向下滚动,直到找到 Telnet 客户端选项
基于上面的文章,查看了项目构建属性。平台目标设置为 x86。更改为"任何CPU"至少可以让我看到该程序!
顺便说一句,在发布此内容之前,我已经寻找了几天的答案,但是在相关的空白处 - "创建的 C# 新进程无法访问某些文件"给了我信息 - 在我创建这个问题之后
谢谢,启发式!
非常狡猾的问题。 当您使用 Windows 资源管理器或直接打开命令提示符时,您正在启动一个 64 位进程。 当您使用 Process.Start()
启动"cmd.exe"时,您将获得与启动它的进程相同的版本。 在本例中,您正在创建一个 32 位进程,因此您将获得命令提示符的 32 位版本。 如果将项目更改为创建目标 x64,您将看到文件!
为什么会这样? 因为,根据您是通过 32 位还是 64 位应用程序访问 System32,您实际上将访问不同的 System32 文件夹! 有关此内容的更多信息,请点击此链接:
https://superuser.com/questions/330941/some-files-in-system32-not-accessible-outside-explorer-on-windows-7