早教吧 育儿知识 作业答案 考试题库 百科 知识分享

执行for%iin(c:\windows\system32\*.dll)doregsvr32%i时,注册过程中发现有以下错误.真正注册成功的没几个巳加载c:\windows\system32\apphelp.dll,但没有找到DlRegisterserver输入点.无法注册这个文件OleInitiaLize

题目详情
执行for %i in (c:\windows\system32\*.dll) do regsvr32 %i时,注册过程中发现有以下错误.真正注册成功的没几个
巳加载c:\windows\system32\apphelp.dll,但没有找到DlRegisterserver输入点.无法注册这个文件
OleInitiaLize失败
c:\windows\system32\avicap.dll 不是一个可执行文件;没有为这个文件类型注册的注册帮助程序
loadlibrary("c:\windows\system32\kdcom.dll")失败-内存分配访问无效
loadlibrary("c:\windows\system32\kdcom.dll")失败-试图访问无效的地址
C:\WINDOWS\system32>regsvr32 c:\windows\system32\msdtclog.dll
系统无法执行指定的程序.
LoadLibrary( "a.dll" )失败-找不到指定的模块
不是内部或外部命令也不是可运行程序或批处理文件?
这些文件都是什么原因导致注册不成功的
怎样才能让它们都能注册成功.
总不能一个个的都手动来修复吧,SYSTEM32下有几百个这样的文件呢,因为几个注册成功以,其余大部分都是因为上述问题注册不成功
还有一个最重要的问题,它们注册不成功是否等于那些DLL没有注册,怎么才能注册呢
▼优质解答
答案和解析
1.不是所有的DLL都要注册的.
regsvr32是用来注册COM组件类的DLL的,还有很多DLL不是COM组件类的,这些DLL不需要注册.如果用regsvr32注册普通DLL,就会出现没有找到DlRegisterserver输入点的提示.
2.能够注册的DLL互相之间是有依赖关系的.有一些必须在其它的DLL注册后才能注册.这个顺序可不好找到.不过,你可以先使用DIR /T参数按文件时间顺序排序,然后再注册一下试试,应该可以解决大部分问题.
除了很多DLL要用regsvr32注册,很多EXE文件也要用它注册.
还是那句话,要想搞清各个文件之间依赖关系实在太难了.
你如果实在非这样做不可,我建议你找一个可以查看DLL和EXE导入库的工具,例如OLLDBG,找到每个DLL和EXE的依赖库,并依次注册.提醒你,这个工作量是很大的,而且也不一定能完全成功,因为有些非标准的DLL在注册时还会依赖其它条件,例如外部文件,注册表键值等.
还是那名话,工作量太大,你确定你一定要做吗?