今天安装了Windows LIve Writer,运行它,出现错误信息如下:
查看事件探查器:
弹出应用程序: WindowsLiveWriter.exe - 无法找到入口: 无法定位程序输入点 IsThreadDesktopComposited 于动态链接库 USER32.dll 上。
没办法,只好先看看User32.dll了:
IsCharAlphaA 0x77d3e5ad 0x0002e5ad 407 (0x197) user32.dll C:\WINDOWS\system32\user32.dll
IsCharAlphaNumericA 0x77d4f209 0x0003f209 408 (0x198) user32.dll C:\WINDOWS\system32\user32.dll
IsCharAlphaNumericW 0x77d2c0f9 0x0001c0f9 409 (0x199) user32.dll C:\WINDOWS\system32\user32.dll
IsCharAlphaW 0x77d1f2ae 0x0000f2ae 410 (0x19a) user32.dll C:\WINDOWS\system32\user32.dll
IsCharLowerA 0x77d3b851 0x0002b851 411 (0x19b) user32.dll C:\WINDOWS\system32\user32.dll
IsCharLowerW 0x77d4f152 0x0003f152 412 (0x19c) user32.dll C:\WINDOWS\system32\user32.dll
IsCharUpperA 0x77d37045 0x00027045 413 (0x19d) user32.dll C:\WINDOWS\system32\user32.dll
IsCharUpperW 0x77d69fb7 0x00059fb7 414 (0x19e) user32.dll C:\WINDOWS\system32\user32.dll
IsChild 0x77d1970e 0x0000970e 415 (0x19f) user32.dll C:\WINDOWS\system32\user32.dll
IsClipboardFormatAvailable 0x77d2f127 0x0001f127 416 (0x1a0) user32.dll C:\WINDOWS\system32\user32.dll
IsDialogMessage 0x77d3c651 0x0002c651 417 (0x1a1) user32.dll C:\WINDOWS\system32\user32.dll
IsDialogMessageA 0x77d3c651 0x0002c651 418 (0x1a2) user32.dll C:\WINDOWS\system32\user32.dll
IsDialogMessageW 0x77d2d8c2 0x0001d8c2 419 (0x1a3) user32.dll C:\WINDOWS\system32\user32.dll
IsDlgButtonChecked 0x77d25d75 0x00015d75 420 (0x1a4) user32.dll C:\WINDOWS\system32\user32.dll
IsGUIThread 0x77d69f77 0x00059f77 421 (0x1a5) user32.dll C:\WINDOWS\system32\user32.dll
IsHungAppWindow 0x77d69a39 0x00059a39 422 (0x1a6) user32.dll C:\WINDOWS\system32\user32.dll
IsIconic 0x77d1be27 0x0000be27 423 (0x1a7) user32.dll C:\WINDOWS\system32\user32.dll
IsMenu 0x77d31328 0x00021328 424 (0x1a8) user32.dll C:\WINDOWS\system32\user32.dll
IsRectEmpty 0x77d1bf26 0x0000bf26 425 (0x1a9) user32.dll C:\WINDOWS\system32\user32.dll
IsServerSideWindow 0x77d1da1d 0x0000da1d 426 (0x1aa) user32.dll C:\WINDOWS\system32\user32.dll
IsWindow 0x77d1b933 0x0000b933 428 (0x1ac) user32.dll C:\WINDOWS\system32\user32.dll
IsWindowEnabled 0x77d1bda2 0x0000bda2 429 (0x1ad) user32.dll C:\WINDOWS\system32\user32.dll
IsWindowInDestroy 0x77d1da74 0x0000da74 430 (0x1ae) user32.dll C:\WINDOWS\system32\user32.dll
IsWindowUnicode 0x77d1c59e 0x0000c59e 431 (0x1af) user32.dll C:\WINDOWS\system32\user32.dll
IsWindowVisible 0x77d1c465 0x0000c465 432 (0x1b0) user32.dll C:\WINDOWS\system32\user32.dll
IsWinEventHookInstalled 0x77d1b1a5 0x0000b1a5 427 (0x1ab) user32.dll C:\WINDOWS\system32\user32.dll
IsZoomed 0x77d1c2b2 0x0000c2b2 433 (0x1b1) user32.dll C:\WINDOWS\system32\user32.dll
我的user32.dll版本为5.1.2600.3099,上面是所有的函数入口,显然,没有IsThreadDesktopComposited,因此可以想见,出现这个错误就不足为怪了。那么看来Windows Live writer加载的DLL不该使用USER32.dll的这个函数,这样,就必须看看DLL的加载过程,以便确定原因:
用VC工具一看,发现是c:\windows\system32\MPRAPI.DLL调用了user32.dll中的IsThreadDesktopComposited函数,而刚好我的XP的user32.dll中没有这个函数,所以发生了错误。
解决办法:
将MPRAPI.DLL改名,如MPRAPI.DLL.bak。
重新运行,解决问题。