操作系统:瘟凄_旗舰版
问题描述:软件安装过程中提示注册控件失败,安装结束后,提示找不到指定模块,软件无法运行。
自己尝试查找无法运行的原因,发现问题大概出在FM20.DLL上,试着从新注册组件,出现无法加载提示。
遂重新下载原版本的FM20.DLL,并使用下列批处理进行修复:
regsvr32 /u fm20.dll
del %systemroot%\system32\fm20.dll
Copy fm20.dll %systemroot\system32\fm20.dll
regsvr32 fm20.dll
又瞎捣鼓一番,运行regsvr32 C:\WINDOWS\system32\FM20.DLL ,发现加载成功,但是又提示DllRegisterServer 调试失败,代码“0x8002801c”,实在是无可奈何。
尝试运行命令“sfc /scannow”,对计算机系统文件进行全面扫描,无果,没啥问题。
放狗寻得一外文网站(要翻墙),上面大书:
Symptom:
When attempting to register a COM object (e.g. Active-X component or OCX) with ‘Regsvr32’, i.e.:
regsvr32 COM
it fails with a message box displaying:
DllRegisterServer in COM failed.
Return code was: 0x8002801c
Where ‘COM’ is the name of the COM object file.
Cause:
The error value ‘0x8002801c’ means ‘Error accessing the OLE registry’.
Remedy:
If this error is encountered when using ‘regsvr32 /u ...’, i.e. to unregister a COM object then it probably indicates that the COM object is not registered or has already been unregistered.
It is likely that permissions on part of the registry have been changed to deny you access. You will need to be a local administrator to register the COM object.
If you encounter this error on Windows Vista or Windows 2008 server then ensure that the command session from which regsvr32 is being run was started using "Run as administrator"
If you are a local administrator (i.e. a member of the ‘Administrators’ group on the workstation) then most likely someone or some application has modified (intentionally or unintentionally) the permissions on one or more registry keys and that this is preventing access. To identify which registry key is causing the problem use Regmon (a freeware tool published by System Internals). Use Regmon to capture all registry access when regsvr32 is run. If an ‘OpenKey’ request fails with ‘Access Denied’ (which is listed by Regmon as ‘ACCDENIED’) then run regedt32 and check the permissions on that registry key. If necessary change the permissions on the key to grant local Administrators ‘Full Control’. They try registering the COM object again. The only times I have encountered this problem it affected more than one key, so be prepared to repeat this process.
--------------------------------------------------------------------------------
These notes have been tested with Windows NT4, XP, Vista and Windows 2008 server.
--------------------------------------------------------------------------------
看得我一愣一愣的。祭出翻译器:
如果遇到这个错误是在使用'Regsvr32 / u和...',即注销一个COM对象,然后它可能表明,COM对象是未注册或已注册。
很可能在注册表的部分权限已被更改,拒绝您访问。您将需要一个本地管理员来注册COM对象。
如果您遇到此在Windows Vista或Windows 2008服务器错误然后确保从哪个Regsvr32的命令会话正在运行的开始使用以管理员“运行”
如果您是本地管理员(即一本'在工作站上的管理员'组的成员),那么最可能的某人或某些应用程序已修改(有意或无意)的一个或多个注册表项的权限,这是无法访问。为了确定哪些注册表项是导致问题的使用Regmon中(一个免费的工具,系统内部出版)。使用Regmon来捕获所有注册表访问时Regsvr32的运行。如果'OpenKey的要求失败,'拒绝访问'(这是由Regmon中被列为'ACCDENIED')然后运行Regedt32并检查该注册表项的权限。如果需要更改权限的关键,给予本地Administrators'完全控制'。他们试图重新注册的COM对象。我唯一遇到这个问题是影响一个以上的关键时刻,所以要准备重复这一过程。
还是搞不明白,所以只好发上来,希望能对楼主有所帮助。
还有一些搞不懂的图:
[ 此帖被挖土机在2010-06-24 15:11重新编辑 ]