Process.Start(“telnet.exe”)抛出exception

我有两个在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")

我得到同样的例外?

谢谢,

汤姆

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

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

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

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

将它设置为任何CPU, 它将找到telnet。

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

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

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

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

将telnet.exe复制到SysWow64文件夹