atl.dll已加载,但对dllregisterserver的调用失败,错误代码0x8002801c怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atl.dll已加载,但对dllregisterserver的调用失败,错误代码0x8002801c怎么办相关的知识,希望对你有一定的参考价值。

重装了N次建行网银盾,然后一直提示atl.dll已加载,但对dllregisterserver的调用失败,错误代码0x8002801c,我的系统是vista,急死人了,谁能告诉我TT

可手动加载atl.dll解决,步骤如下:

1、首先,在一定途径获取atl.dll文件,例如搜索引擎查询并下载。

2、其次,将atl.dll文件复制到DLL目录“C:\\Windows\\System32”下。

3、然后,点击“开始菜单”中的“运行”按钮,输入:regsvr32 atl.dll,点击确定。

4、最后,在弹出的安装完成atl.dll的提示上,点击确定。

参考技术A

可手动加载atl.dll解决,步骤如下:

1、首先,在一定途径获取atl.dll文件,例如搜索引擎查询并下载。

2、其次,将atl.dll文件复制到DLL目录“C:\\Windows\\System32”下。

3、然后,点击“开始菜单”中的“运行”按钮,输入:regsvr32 atl.dll,点击确定。

4、最后,在弹出的安装完成atl.dll的提示上,点击确定。

参考技术B (1)运行输入msconfig回车,打开系统配置实用程序,在启动项目中查找一个名为“****.dll”,如果有将它前面的钩去掉,然后按应用确定(如果没有跳过)。
(2)运行输入regedit回车打开注册表,选编辑查找一个名为“****.dll”的键值项,找到后删除,多查找几次删除干净,然后重新启动电脑即可。
(3)去掉自启动项
开始/运行输入regedit回车打开注册表编辑器,依次展开
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 右侧,
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]在右侧,
看看有没有你要找的选项(****.dll),如果有删除,重启即可。

如果上述方法无效,请修复一下系统:
1、开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复。
2、请开机按F8进入到安全模式中用系统自带的系统还原,还原到你没有出现这次故障的时候修复。
3、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。
4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。
5、如果故障依旧,建议重装操作系统。
参考技术C 2011-08-31 21:55 win7 0x8002801c错误WIN7系统下想在OFFICE里使用DTPICKER,从网上下载了Mscomct2.OCX,但在注册时(regsvr32.exe Mscomct2.ocx)提示0x8002801c错误

经过查找后发现原来错误原因是在运行CMD时没有使用管理员身份,在C:\windows\system32\cmd.exe上点右键,使用“以管理员身份运行”,打开CMD时再次运行regsvr32.exe Mscomct2.ocx,提示注册成功。
我这么照做的,可以啦~

参考资料:http://hi.baidu.com/fhqdqrqw/item/28bffec75a67167188ad9e50

参考技术D (1)运行输入msconfig回车,打开系统配置实用程序,在启动项目中查找一个名为“****.dll”,如果有将它前面的钩去掉,然后按应用确定(如果没有跳过)。
(2)运行输入regedit回车打开注册表,选编辑查找一个名为“****.dll”的键值项,找到后删除,多查找几次删除干净,然后重新启动电脑即可。
(3)去掉自启动项
开始/运行输入regedit回车打开注册表编辑器,依次展开
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 右侧,
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]在右侧,
看看有没有你要找的选项(****.dll),如果有删除,重启即可。

如果上述方法无效,请修复一下系统:
1、开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复。
2、请开机按F8进入到安全模式中用系统自带的系统还原,还原到你没有出现这次故障的时候修复。
3、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。
4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。
5、如果故障依旧,建议重装操作系统。

如何在 ATL DLL 中获取 HWND(用于 SendMessage 或 PostMessage)

【中文标题】如何在 ATL DLL 中获取 HWND(用于 SendMessage 或 PostMessage)【英文标题】:How to get HWND in ATL DLL (for SendMessage or PostMessage) 【发布时间】:2014-12-26 03:44:55 【问题描述】:

我想在 ATL DLL 中为 SendMessage 或 PostMessage 函数在 Thread 中获取 HWND。 但是,ATL DLL 没有窗口。

如何在 ATL DLL 中获取 HWND?

项目应用设置:DLL(动态链接库),安全开发生命周期,('不'支持MFC) 类选项:公寓,聚合是,双接口,连接点。

HelloCtrl.cpp(VB 客户端正在处理 ShowMessage())

STDMETHODIMP CHelloCtrl::ShowMessage(BSTR bstrCaption, VARIANT_BOOL* lpvbResult)

    DWORD dwThreadID;
    m_hThread_ReadData = CreateThread(NULL, 0, T_ReadData, (LPVOID)this, 0, &dwThreadID);
    return S_OK;


DWORD WINAPI CHelloCtrl::T_ReadData(LPVOID pParam)

    CHelloCtrl* hCtrl = (CHelloCtrl*) pParam;
    ::PostMessage(hCtrl->m_hWnd, WM_KEYDOWN, (WPARAM)NULL, (LPARAM)NULL);
    return S_OK;


void CHelloCtrl::LeftButton()

    Fire_OnMouseClick(123, 123);

HelloCtrl.h

 #define WM_THREADFIREEVENT (WM_USER+1)
BEGIN_MSG_MAP(CHelloCtrl)
    CHAIN_MSG_MAP(CComControl<CHelloCtrl>)
    DEFAULT_REFLECTION_HANDLER()
    MESSAGE_HANDLER(WM_THREADFIREEVENT, OnLeftButtonDown)
END_MSG_MAP()

public:
    STDMETHOD(ShowMessage)(BSTR bstrCaption, VARIANT_BOOL* lpvbResult);
    LRESULT OnLeftButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
    void LeftButton();
private:
    HANDLE m_hThread_ReadData;
    static DWORD WINAPI T_ReadData(LPVOID pParam);

【问题讨论】:

MSDN 如果没有窗口,就没有hWnd。 【参考方案1】:

Window 是一个进程或模块可能拥有或不拥有的对象,或者它可能会在需要时创建一个对象。也就是说,如果不指定您要查找的窗口类型及其HWND 句柄,您的问题就没有答案。 DLL 和 HWND 无关。

从上下文来看,您似乎想要一个可用于消息传递和在线程之间传输执行控制的窗口。也就是说,您在某处发布然后在其他地方处理,将线程魔法留给窗口 API。

在这种情况下,您可以重复使用现有窗口之一,例如为 ActiveX 控件创建的窗口,您只需创建自己的窗口,您可以完全控制并用于您的目的。对于后者,您从CWindowImpl 派生,并且...参见Implementing a Window with CWindowImpl。前者可能更简单可能不是:ActiveX 控件不必有窗口,在这种情况下它们是无窗口控件。同时,您可以选择使用m_bWindowOnly 强制窗口控制,请参阅How do I get the HWND for an ActiveX control after the control has been initialised/activated?。

【讨论】:

以上是关于atl.dll已加载,但对dllregisterserver的调用失败,错误代码0x8002801c怎么办的主要内容,如果未能解决你的问题,请参考以下文章

如何安全地删除 ATL DLL 中的 std::thread

“Dll已加载,但对Dll的调用失败”解决办法

WindowsMSFLXGRD.OCX已加载,但对Dllregisterserver的调用失败

模块XXX已加载,但对XXX的调用失败,错误代码0x80004005,何解 ?

IE报错:模块"scrrun.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005

模块"scrrun.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005