2012-03-14 30 views
0

我的.net应用程序在x86上运行良好,但是当编译x64应用程序并在win2003 x64环境中运行时,会发生错误“应用程序未能正确初始化0xc0000142)“ 而我的应用程序有两个部分,主应用程序命名为A.exe和工作应用程序B.exe!当运行程序时,它将通过C#功能Process.Start一次启动将近100个B.exe! 当我在x86系统上测试我的程序时,一切都很顺利,但是在x64上,几乎每次某些B.exe进程崩溃时,错误对话框中都包含0xc0000142!.net应用程序在win2003 x64 sp2环境中运行时遇到错误0xc000142

因此,我尝试使用进程监视器工具来监视B.exe的行为,我发现每次操作LoadImage C:\ Windows \ System32 \ kernel32.exe后都会挂起B.exe,并且此操作结果成功! 如果B.exe成功运行,则下一个操作是RegOpenKey,并在(HKLM \ System \ CurrentControlSet \ Control \ Session Manager)上运行! 那么,谁能给我一些有用的提示或解决方案来帮助我解决这个问题,thanx!

回答

1

0xc0000142 means STATUS_DLL_INIT_FAILED

我怀疑进程B使用了一些(第三方?)DLL,并且其中一个DLL有x64问题和/或某些依赖项丢失和/或一些授权问题和/或某些权限/安全问题。

随着进一步的细节也许可以更具体...

+0

谢谢您的回答!进程B真的可以使用一些DLL 3日,但我已经编译所有的DLL与源代码的应用程序的x64!而我猜想,如果这个问题是由注册表操作的限制引起的? – CaptainJack 2012-03-14 09:28:10

+0

@CaptainJack欢迎您:-)必须有一些DLL导致问题...您编译为x64的源代码本身可能正在使用其他一些DLL ... – Yahia 2012-03-14 09:33:40

+0

呃,其中一些通过DLLImport使用本地方法,如kernel32.dll和ws2_32.dll,是我的问题造成的那些DLL? – CaptainJack 2012-03-14 09:37:11

相关问题