【问题标题】:Process.Start("telnet.exe") throws exceptionProcess.Start("telnet.exe") 抛出异常
【发布时间】:2010-12-15 05:16:32
【问题描述】:

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

我也遇到同样的异常?

谢谢,

汤姆

【问题讨论】:

  • c:\windows\syswow64文件夹下有telnet.exe吗?如果它丢失,则意味着您的系统上缺少 32 位版本的 telnet。
  • 您的登录用户有权访问 system32 目录?

标签: c# 64-bit


【解决方案1】:

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

【讨论】:

  • hm,有没有办法从 32 位 .NET 进程启动 64 位 exe?
【解决方案2】:

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

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

【讨论】:

  • 我认为问题在于 nithins 表明 w2k8 R2 x64 上没有 32 位版本的 telnet,我正在尝试从 32 位进程启动 64 位 exe。因为正如我原来的帖子中所指出的,即使直接使用完整路径(@“C:\Windows\System32\telnet.exe”)调用 telnet 也会失败
  • 啊,抱歉没看。从 x86 进程运行 x64 exe 应该没有问题 - 只有当您将其加载到相同的地址空间时才会出现问题(例如,为 DLL 执行 Assembly.LoadFrom)。
  • 啊,您正在获取虚拟化拦截 c:\windows\system32 并将其转换为 syswow64(即 32 位等效项)。
  • blog.joeware.net/2009/08/28/1688 使用 sysnative 而不是 system32(没有 x64 盒子可供测试,抱歉)
  • SysNative 仅适用于 Vista 或更高版本。您可能想使用 File.Exists 来提出一个与操作系统无关的 impl。谷歌搜索的最佳关键字是 sysnative x64。我在 2005 年发现了 Russinovich 的一篇文章,使用 filemon [它是 procmon 的前身] 来解决这个问题。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    这让我发疯了...有一个项目会在没有完整路径的情况下找到“telnet.exe”,而另一个项目拒绝找到它(即使有路径,或者从未弄清楚)。我的开发机器是 64 位的。

    问题在于构建中的目标平台。

    如果设置为 x86,它将找不到 telnet。

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

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

    【讨论】:

      【解决方案5】:

      将 telnet.exe 复制到 SysWow64 文件夹

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-24
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        • 2011-02-25
        • 2012-01-24
        相关资源
        最近更新 更多