我正在开发一个32位WinForm应用程序(目标:.NET 3.5)。我的客户坚持将应用安装到“Windows \ System32 \ clientname”文件夹中并在启动时自动启动。此外,应用必须为32位,因此我无法使用“任何CPU”。
我正在使用VS2010在Win7 x64下开发,并且安装了所有版本的.NET。当我启动应用程序时,我收到消息“无法找到运行此应用程序的运行时版本”。 在Win7 x86上它没有问题。这不是应用程序本身,我100%确定所有必需的框架都已安装。
我知道在x64系统上这个文件夹不能用于32位应用程序,但正如我所说:客户坚持并且不会让步。
在我明确告诉客户无法完成之前,我想探索所有选项。我当然用谷歌搜索并搜索了这个好网站,但没有对我的特殊情况有所帮助。
我的应用程序会生成位于同一文件夹中的另一个32位进程。当然,在x64上也没有用,但是我通过使用“Wow64DisableWow64FsRedirection”解决了这个问题,然后将其复制到另一个位置从那里启动它(工作正常)。 我完成了我的作业,但是我找不到在x64和特定文件夹下启动主应用程序的解决方案。
有吗?
答案 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
目录中。
我知道,这是一个不整齐的解决方案,但是再一次,客户的要求从一开始就有点不寻常。