CoCreateInstance尝试加载64位版本的DLL,即使App是32位

时间:2010-02-08 00:59:05

标签: scheduled-tasks

我的应用程序与任务管理器连接。处理此问题的代码因此加载mstask.dll。我遇到的问题是我的应用程序(32位)在Windows 7 64位上失败,并显示错误消息“%1不是有效的win32应用程序”。

使用映射文件和一些堆栈跟踪我已确定在使用任务计划服务的GUID调用CoCreateInstance时会触发此错误消息。通过使用来自SysInternals的Process Monitor,我能够确定我的应用程序实际上是在尝试加载C:\ Windows \ system32 \ mstask.dll而不是C:\ Windows \ SYSWOW64 \ mstask.dll这是32位版本的mstask的.dll。

因此,错误消息的原因是应用程序尝试加载C:\ Windows \ system32 \ mstask.dll这是一个64位DLL,这显然不适用于我的32位应用程序。

有没有人知道为什么CoCreateInstance无法正确加载32位版本的mstask.dll?显然,SYSWOW64重定向无法正常工作。

奇怪的是,我创建了一个小型测试应用程序,它只是尝试初始化Task Scheduler服务。在此测试应用程序中,CoCreateInstance调用成功,没有任何问题。所以我的真实应用程序必须有所不同,但我不知道是什么。

赞赏任何和所有输入!

0 个答案:

没有答案
相关问题