“无法找到运行此应用程序的运行时版本”,适用于64位Windows上的32位应用程序

时间:2011-12-14 22:48:41

标签: c# .net x86 64-bit

我正在开发一个32位WinForm应用程序(目标:.NET 3.5)。我的客户坚持将应用安装到“Windows \ System32 \ clientname”文件夹中并在启动时自动启动。此外,应用必须为32位,因此我无法使用“任何CPU”。

我正在使用VS2010在Win7 x64下开发,并且安装了所有版本的.NET。当我启动应用程序时,我收到消息“无法找到运行此应用程序的运行时版本”。 在Win7 x86上它没有问题。这不是应用程序本身,我100%确定所有必需的框架都已安装。

我知道在x64系统上这个文件夹不能用于32位应用程序,但正如我所说:客户坚持并且不会让步。

在我明确告诉客户无法完成之前,我想探索所有选项。我当然用谷歌搜索并搜索了这个好网站,但没有对我的特殊情况有所帮助。

我的应用程序会生成位于同一文件夹中的另一个32位进程。当然,在x64上也没有用,但是我通过使用“Wow64DisableWow64FsRedirection”解决了这个问题,然后将其复制到另一个位置从那里启动它(工作正常)。 我完成了我的作业,但是我找不到在x64和特定文件夹下启动主应用程序的解决方案。

有吗?

1 个答案:

答案 0 :(得分:3)

为了解决这个问题,我在Win7 x64机器上创建了两个文件夹:

  • C:\Windows\System32\ClientName;和
  • C:\Windows\SysWOW64\ClientName

接下来,我创建了一个针对.NET 3.5的简单x86 WinForms应用程序。我发现如果我将可执行文件复制到C:\Windows\System32\ClientName,我会收到与您报告的完全相同的错误消息。

但是,如果我将可执行文件复制到两个目录,那么我可以从C:\Windows\System32\ClientName启动它,它运行得很好。

我没试过这个,但我怀疑如果你有一个多装配应用程序,你只需要将*.exe文件复制到C:\Windows\System32\ClientName。然后,所有其他文件(和EXE)将驻留在C:\Windows\SysWOW64\ClientName目录中。

我知道,这是一个不整齐的解决方案,但是再一次,客户的要求从一开始就有点不寻常。