我们的应用程序使用简单MAPI发送电子邮件。我们的一位客户在从他的终端服务器上的会话发送电子邮件时遇到问题。动态加载时出错mapi32.dll
中的Mapi32.dll装有给LoadLibrary其成功的呼叫,但随后我们的应用程序试图获得的功能MAPILogon
,MAPILogOff
,MAPISendMail
,MAPIFreeBuffer
和MAPIResolveName
地址。问题是GetProcAddress
对于那些ERROR_ACCESS_DENIED
(代码:5)功能失效,MAPIFreeBuffer
除外。它看起来像某种安全的东西。
我该如何解决这个问题,还是应该使用其他方法发送邮件?
FWI,这里大约操作系统和注册表项HKEY_LOCAL_MACHINE \ SOFTWARE内容\微软\ Windows消息子系统的一些详细信息:
OS info: 5.2.3790 VER_PLATFORM_WIN32_NT Service Pack 2
Contents of SOFTWARE\Microsoft\Windows Messaging Subsystem
InstallCmd: rundll32 setupapi,InstallHinfSection MSMAIL 132 msmail.inf
MAPI: 1
CMCDLLNAME: mapi.dll
CMCDLLNAME32: mapi32.dll
CMC: 1
MAPIX: 1
MAPIXVER: 1.0.0.1
OLEMessaging: 1
Contents of SOFTWARE\Microsoft\Windows Messaging Subsystem\MSMapiApps
inetsw95.exe:
choosusr.dll:
msab32.dll:
nwab32.dll:
outstore.dll: Microsoft Outlook
CDOEXM.DLL:
EMSMDB32.DLL:
EMSABP32.DLL:
newprof.exe: Microsoft Outlook
outlook.exe:
wfxmsrvr.exe: Microsoft Outlook
msexcimc.exe:
exchng32.exe:
schdmapi.dll: Microsoft Outlook
pilotcfg.exe: Microsoft Outlook
mailmig.exe: Microsoft Outlook
admin.exe:
msspc32.dll: Microsoft Outlook
cnfnot32.exe: Microsoft Outlook
ilpilot.exe: Microsoft Outlook
events.exe:
我在德尔福7.0,但是这不应该的问题。
编辑,添加的版本信息:
FILEVERSION的C信息:\ WINDOWS \ SYSTEM32 \ MAPI32.DLL
Fileversion: 6.5.7226.0
FileDescription=Extended MAPI 1.0 for Windows NT
CompanyName=Microsoft Corporation
InternalName=MAPI32
Comments=Service Pack 1
LegalCopyRight=Copyright (C) 1986-2003 Microsoft Corp. All rights reserved.
LegalTradeMarks=Microsoft(R) and Windows(R) are registered trademarks of Microsoft Corporation.
OriginalFileName=MAPI32.DLL
ProductName=Microsoft Exchange
ProductVersion=6.5
FILEVERSION的C信息:\ Program Files文件\ Common Files文件\ SYSTEM \ MSMAPI \ 1043 \ msmapi32.dll
Fileversion: 11.0.5601.0
FileDescription=Extended MAPI 1.0 for Windows NT
CompanyName=Microsoft Corporation
InternalName=MAPI32.DLL
LegalCopyRight=Copyright © 1995-2003 Microsoft Corporation. All rights reserved.
OriginalFileName=MAPI32.DLL
ProductName=MAPI32
ProductVersion=11.0.5601
我添加了请求的版本信息。我不得不说mapi32.dll的版本看起来很可疑。它不应该是版本1的存根,就像在Windows XP上一样吗?也许我必须要求我的客户端运行fixmapi.exe。 – 2010-05-27 07:47:17