Why is my application, which I compiled with AnyCPU, running as a 32-bit process on my 64-bit machine, and therefore unable to interact with Notepad, which is running as a 64-bit process?
I have the following code which will not run on x64 Operating System since notepad.exe
is x64 and a x86 application cannot get the modules information of a x64 process:
prc.Modules[0].FileName
.Net Exception throws on my code:
System.ComponentModel.Win32Exception (0x80004005): A 32 bit processes cannot access modules of a 64 bit process.
According to many answers and articles on this forum, MSDN, ..., I know that I need to use AnyCPU instead because of the fact that using x64 has no specific benefit for me. Even when Compile on AnyCPU configuration, my error persists, furthermore, in Task Manager I see a (32-bit)
at the end of my process name.
(Actually I tested the code with checking performance and the x64 code ran ~40 ms faster. never mind I do not want my code run 40 ms faster :D )
I do not know that is wrong.
VS 2011 Beta (x64)
Windows 8 Consumer Preview (x64)
Sincerely yours, Peyman Mortazavi
Go into the project Properties. On the left side, select Build.
Take a look at the "Platform target:" setting for the current active platform. Change it to x64.
(I suspect your "Platform target:" will be explicitly x86 for "Any CPU")