首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我得到‘32位进程不能访问64位进程的模块’。调用Process.Start()的异常

我得到‘32位进程不能访问64位进程的模块’。调用Process.Start()的异常
EN

Stack Overflow用户
提问于 2015-12-03 16:17:38
回答 2查看 19.5K关注 0票数 12

下面是代码示例

代码语言:javascript
复制
var startInfo = new ProcessStartInfo
{
    Arguments = commandStr,
    FileName = @"C:\Windows\SysWOW64\logman.exe",
};

using (var createCounterProc = new Process { StartInfo = startInfo })
{
    createCounterProc.Start();
    createCounterProc.WaitForExit();
}

运行代码后,我得到“32位进程无法访问64位进程的模块”。MainModule中的消息(NativeErrorCode:299)。我的解决方案被配置为AnyCPU。我尝试过64位和32位版本的logman.exe (C:\Windows\SysWOW64\logman.exe和C:\Windows\System32\logman.exe),但仍然有相同的错误。我的操作系统是Win8.1Prox64。是什么导致了这个问题?

堆栈跟踪:

在System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId,布尔( firstModuleOnly)在System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId) ( System.Diagnostics.Process.get_MainModule()

以下是构建配置:

EN

回答 2

Stack Overflow用户

发布于 2015-12-03 16:28:32

为平台目标选择任何CPU是不够的,您还必须取消选中首选32位,否则应用程序仍将作为32位应用程序运行。

这只能在应用程序项目上实现,而在库项目上是不可能的。如果您的项目是一个库,则必须使用您的库在项目中执行它。

票数 23
EN

Stack Overflow用户

发布于 2015-12-03 17:21:50

经过调查,我意识到Logman.exe是非托管代码,因此它不能以MainModule的形式返回.NET对象,因此它是一种正常的行为。对于Win32Exception,我不会稍微混淆错误信息。它不影响Process.Start()的执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34070969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档