【发布时间】:2016-01-20 14:07:54
【问题描述】:
我正在尝试使用以下代码列出加载以进行处理的 dll:
Process[] ObjModulesList = Process.GetProcessesByName("iexplore");
foreach (Process prc in ObjModulesList)
{
ProcessModuleCollection ObjModules = prc.Modules;
foreach (ProcessModule objModule in ObjModules)
{
string strModulePath = objModule.FileName.ToString();
Console.WriteLine(strModulePath);
}
}
我遇到了错误
32 位进程无法访问 64 位进程的模块。
我尝试以管理员身份运行我的进程,并以 64 位和 32 位运行 iexplore。这些都没有工作。
顺便说一句,我必须将我的程序编译为 32 位。
有什么想法吗?
【问题讨论】:
-
如果你将你的应用编译为 64 位,你会得到相反的错误吗?
-
没有。还是一样:“32位进程不能访问64位进程的模块。”
-
您是如何将您的应用程序编译为 64 位的?您是否在任务管理器中检查了您的应用程序实际上以 64 位运行?你甚至在运行正确的 exe 吗?
-
检查 corflags.exe 作为这样做的一种潜在方法
-
最重要的建议相关 question 似乎有大部分答案(它不是 .NET,但由于它从根本上说“你无法在本地获取此信息”,因此没有理由期待 . NET 来改变这里的数学)
标签: c# process 32bit-64bit