Process.Start(“telnet.exe”)抛出异常

时间:2009-11-10 20:24:01

标签: c# 64-bit

我有两个应用程序在W2k8 R2 x64上运行,一个被编译为64位,另一个被编译为32位,因为它具有COM依赖性。 在我试图打电话的时候:

Process p = Process.Start("telnet.exe", string.Format("{0} {1}", address, port));

在x64中它工作得很好,但是在32位中我得到一个System.ComponentModel.Win32Exception(“系统找不到指定的文件”)?

知道这里发生了什么吗?即使我打电话

Process.Start(@"C:\Windows\System32\telnet.exe")

我得到同样的例外吗?

谢谢,

汤姆

5 个答案:

答案 0 :(得分:6)

要从32位应用程序启动system32 64位应用程序(至少在Vista上,2k8,7,在x64 XP或2k3上不起作用)从sysnative目录运行它,即“C:\ windows \ sysnative \” telnet.exe“(或者禁用Wow64,但这通常是一个坏主意)。

答案 1 :(得分:1)

这让我疯了......有一个项目会找到没有完整路径的“telnet.exe”和一个拒绝找到它的人(即使是路径,或者从来没有想过它)。我的开发机器是64位。

问题是构建中的目标平台。

如果设置为x86,则无法找到telnet。

将其设置为任何CPU 找到telnet。

有时您需要将其设置为x86,这允许您的应用程序在64位平台上查看32位驱动程序(例如odbc驱动程序)

答案 2 :(得分:0)

Windows Server 2008没有32位telnet.exe客户端。它只在Windows \ system32文件夹中安装64位版本。

答案 3 :(得分:0)

\ live.sysinternals.com \ tools \ procmon.exe和/或procexp总是有答案。

您是否在流程的上下文中查看了路径环境变量?你可以在它前面添加System \ SysWow64路径以使其工作吗?

答案 4 :(得分:0)

将telnet.exe复制到SysWow64文件夹