C#cmd提示符无法看到telnet.exe

C#cmd提示符无法看到telnet.exe,c#,cmd,telnet,C#,Cmd,Telnet,我使用C#和一个控制台程序来创建一个新的cmd进程,没有重定向stdin或stdout,所以我可以从这里输入命令行。 (我在那里使用telnet时遇到问题,所以这一步只是一项调查。) 能够在窗口中输入并接收输出。 当我切换到c:Windows\system32时,键入dir te*.exe不会显示任何内容。 在我直接创建的另一个命令提示符中,我看到了文件(telnet.exe)。 有什么不对的建议吗 { ProcessStartInfo startInfo = new

我使用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();
        }
    }

我相信,自从Windows7以来,您必须将Telnet作为Windows功能安装

您有在Win7上启用Telnet的指南,但它适用于Win8.1和Windows 10

如果您无法阅读网站,请执行以下步骤:


转到控制面板->程序->打开或关闭Windows功能->向下滚动,直到找到Telnet客户端选项

,我相信,由于Windows 7,您必须将Telnet作为Windows功能安装

您有在Win7上启用Telnet的指南,但它适用于Win8.1和Windows 10

如果您无法阅读网站,请执行以下步骤:


转到控制面板->程序->打开或关闭Windows功能->向下滚动,直到找到Telnet客户端选项

根据上面的文章,查看项目构建属性。 平台目标设置为x86。 更改为“任意CPU”至少可以让我看到程序

顺便说一句,在发布这个问题之前,我已经寻找了好几天的答案,但在相关的“C#35;新建流程无法访问某些文件”中的空白处,我在创建了这个问题之后,给了我这个信息


谢谢,启发法

基于上述文章,我们研究了项目构建属性。 平台目标设置为x86。 更改为“任意CPU”至少可以让我看到程序

顺便说一句,在发布这个问题之前,我已经寻找了好几天的答案,但在相关的“C#35;新建流程无法访问某些文件”中的空白处,我在创建了这个问题之后,给了我这个信息


谢谢,启发法

这真是一个诡计。当您使用windows资源管理器或直接打开命令提示符时,您正在启动一个64位进程。当您使用
Process.Start()
启动“cmd.exe”时,您将获得与启动它的进程相同的版本。在本例中,您正在创建一个32位进程,因此您将获得32位版本的命令提示符。如果您将项目更改为创建目标x64,您将看到这些文件

为什么会这样?因为,根据您是通过32位还是64位应用程序访问System32,您实际上将访问不同的System32文件夹!有关详细信息,请点击以下链接:


这是一个非常狡猾的问题。当您使用windows资源管理器或直接打开命令提示符时,您正在启动一个64位进程。当您使用
Process.Start()
启动“cmd.exe”时,您将获得与启动它的进程相同的版本。在本例中,您正在创建一个32位进程,因此您将获得32位版本的命令提示符。如果您将项目更改为创建目标x64,您将看到这些文件

为什么会这样?因为,根据您是通过32位还是64位应用程序访问System32,您实际上将访问不同的System32文件夹!有关详细信息,请点击以下链接:


尝试在命令提示符中键入
where telnet
——它会告诉您可执行文件的位置。结果是什么?在Windows 7中运行-忘记提及此问题。C:\Windows\system32>其中telnet信息:找不到给定模式的文件。您可以在“打开或关闭Windows功能”中更改telnet配置在命令提示符中键入
where telnet
,它会告诉您可执行文件的位置。结果是什么?在Windows 7中运行-忘记提及此问题。C:\Windows\system32>其中telnet信息:找不到给定模式的文件。您可以在“打开或关闭Windows功能”中更改telnet配置检查这篇文章可能的重复我相信这篇文章和我的问题是一样的:我相信这篇文章和我的问题是一样的:哈!这就是我花了这么长时间输入回复的结果。很高兴您找到了答案。您可以使用以下方法始终获取系统本机system32位文件夹,无论是32位或64位进程的组合,还是OS
string sysFolder64Bit;if(Environment.is64BitOperationSystem&!Environment.Is64BitProcess){sysFolder64Bit=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows),“sysnative”);}else{sysFolder64Bit=Environment.GetFolderPath(Environment.SpecialFolder.System)}
只有当您是64位系统上的32位进程时,
sysnative
文件夹才可见。任何其他组合都不会存在。哈哈!这就是我花了这么长时间输入回复的结果。很高兴您找到了答案。您可以使用以下方法始终获取系统本机system32位文件夹,无论是32位或64位进程的组合,还是OS
string sysFolder64Bit;if(Environment.is64BitOperationSystem&!Environment.Is64BitProcess){sysFolder64Bit=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows),“sysnative”);}else{sysFolder64Bit=Environment.GetFolderPath(Environment.SpecialFolder.System)}
只有当您是64位系统上的32位进程时,
sysnative
文件夹才可见。任何其他组合都不会存在。