为什么我使用 AnyCPU 编译的应用程序在我的64位机器上作为32位进程运行,因此无法与作为64位进程运行的记事本进行交互?
以下是我的代码,它无法在x64操作系统上运行,因为
notepad.exe
是x64应用程序,而 x86应用程序无法获取x64进程的模块信息:prc.Modules[0].FileName
我的.Net代码出现了异常:
System.ComponentModel.Win32Exception (0x80004005):32位进程无法访问64位进程的模块。
根据这个论坛和MSDN等许多答案和文章的解释,我知道需要使用AnyCPU配置,因为对我来说使用x64没有具体好处。即使在编译时使用了AnyCPU配置,我的错误仍然存在,此外,在任务管理器中,我看到我的进程名后面有一个(32-bit)
。
(实际上,我测试了性能并且x64代码运行速度比较快,大约快40毫秒。不管怎样,我不想让代码运行得更快 :D )
我不知道出了什么问题。
VS 2011 Beta (x64)
Windows 8 Consumer Preview (x64)
祝好,Peyman Mortazavi