我有以下代码无法在x64操作系统上运行,因为 notepad.exe 是x64,而x86应用程序无法获取x64进程的模块信息。
prc.Modules[0].FileName
.Net Exception抛出我的代码
System.ComponentModel.Win32Exception(0x80004005):32位进程无法接受 64位进程的ess模块。
根据此论坛上的许多答案和文章,MSDN,...,我知道我需要使用AnyCPU,因为使用x64对我没有特别的好处。 (不好意思:我测试了一个检查性能的代码,x64代码跑得快了~40毫秒。没关系我不希望我的代码运行速度快40毫秒:D) 相反,我不会这样的问题。但即使在AnyCPU配置上编译时也是如此。我的错误仍然存在,此外,在任务管理器中,我在流程名称末尾看到(32位)。
我不知道那是错的。 VS 2011 Beta(x64) Windows 8 Consumer Preview(x64)
真诚的,你的, Peyman Mortazavi
答案 0 :(得分:3)
进入项目属性。在左侧,选择Build。
查看当前活动平台的“平台目标:”设置。将其更改为x64。
(我怀疑你的“平台目标:”将明确表示“任何CPU”的x86)
答案 1 :(得分:2)
虽然提问者已经接受了答案,但我觉得答案是不完整的,因为提问者提到他正在使用Visual Studio 2011,因此假设目标.Net Framework为4.5,关于什么“几乎没有注意事项” AnyCPU “表示。
请参阅这两个链接,以便更好地了解“ AnyCPU ”的含义随时间的变化情况。
通过这些链接,您可以得到应用程序为何以32位进程运行的问题的答案
在64位Windows操作系统上:
使用/ platform编译的可执行文件:anycpu32bitpreferred执行 32位CLR。
这是你的罪魁祸首。