电脑互动吧

 找回密码
 注册
查看: 7919|回复: 0

[技术资讯] Regsvr32 用法和错误消息的说明

[复制链接]
发表于 2013-5-16 20:01:25 | 显示全部楼层 |阅读模式
对于那些可以自行注册的对象链接和嵌入 (OLE) 控件,例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。
2 P' `* o% g% _/ x
8 f' E: x, r' CRegsvr32.exe 的用法
- o: P! A' y. Q6 Q
% l2 S# W2 Y8 g+ q: I& q( cRegSvr32.exe 具有以下命令行选项: Regsvr32 [/n] [/i[:cmdline]] dllname ! Z5 ]/ g5 A! D1 i% \

. t5 q( _" T) }- f  K   /u - Unregister server<BR/>
* X+ Y/ Y# N# L0 f- ^) X8 G   /i - Call DllInstall passing it an optional [cmdline];
3 j* K4 M! L9 L9 W        when used with /u calls dll uninstall 8 {+ E6 T! R4 ^- ~6 e( W
   /n - do not call DllRegisterServer; this option must + K. Q4 o1 R5 s' X, A3 r1 |& G
        be used with /i ' E& ~) L9 z( ]
! W* u+ G; E% s( u9 S# Q; x
当您使用 Regsvr32.exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32.exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。要查看 Win32 错误代码的列表,请参见下面的 Microsoft Web 站点:  4 m* z( o6 _: }7 ^$ f6 V4 V
http://msdn.microsoft.com/librar ... n32_error_codes.asp  
1 W7 \# D  _  D+ t; E7 U% P! C- n( u3 b9 K+ x* d
例如,要手动注册 Sample.ocx ActiveX 控件,请在 MS-DOS 提示符处键入以下命令:  
4 a; L# q& l$ k. `1 K' qc:\regsvr32.exe sample.ocx 5 p7 Y  `# A: u, A) R4 q$ e( E

# S" j" s3 M/ W; s  URegsvr32.exe 错误消息 % j& B# u5 B4 a6 {  v

$ H* b$ N) c8 u0 h以下列表介绍了 RegSvr32 错误消息和可能的原因。  
* c4 c; V& A" T: E  {5 [; s2 O
+ }! @( V2 }* S! ?: b8 GUnrecognized flag:/invalid_flag
6 w- D$ [  M+ R" b
: w7 U) S9 g) B; K. P  `键入的标志或开关组合无效(请参阅本文中的“Regsvr32.exe 的用法”一节)。  ( f5 P# o5 H( e; r2 Q; }* z
4 x  ?' \% |6 U! o. q7 R- S( g4 N
No DLL name specified.
0 C; d( M- x9 S* [
& d$ I$ W7 P: I; t$ Y未包括 .dll 文件名(请参阅本文中的“Regsvr32.exe 的用法”一节)。  
+ H5 I0 ~) T4 C6 s1 L9 ^) T4 q0 m6 B* e
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
, U  i* U+ r8 `7 ~4 ?* e5 {- W6 y1 c/ X
Dllname 不是 .dll 或 .ocx 文件。例如,键入 regsvr32 wjview.exe 就会生成该错误消息。  / g* g7 C5 j, x0 ?% E6 E
( @- s9 ?1 m! w+ z' H/ R
Dllname is not an executable file and no registration helper is registered for this file type. * Z" S4 p# q# r' t7 J+ F' }4 C
& [- S$ C* j! [9 L( s4 e" R& q; c
Dllname 不是可执行文件(.exe、.dll 或 .ocx)。例如,键入 regsvr32 autoexec.bat 就会生成该错误消息。 " z3 b- w: T0 {4 n# T
6 u; D. K5 \% N. Y) P5 a
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.   y1 P( X) V5 ^2 ?1 W
0 d# N! }( r! K1 h% Y: O
Dllname 可能未导出,或者内存中可能有损坏的 Dllname 版本。请考虑使用 Pview 来检测该文件并删除它。  . Y7 d+ F8 d  D4 ]
/ d' C) J8 y/ V8 p, D6 J1 ^0 o
Dllname is not self-registerable or a corrupted version is in memory. 1 d; b1 J4 h9 j7 l4 m
% F) R, A( w6 o. a5 _
例如,键入 regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。如果您怀疑内存中有损坏的 Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章:  
& Q' f2 o+ N8 |7 ^197155 如何终止孤立进程  
9 a( l3 m0 |6 u+ f/ n2 S; L- @* n) O; }7 n- Y0 j
OleInitialize failed (or OleUninitialize failed). . {. m4 H- ^8 ]9 Q" ]
: b9 d% F" N% v2 f& G
Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。如果对 COM 库进行初始化或撤消初始化的尝试失败,就会出现这些错误消息。例如,Ole32.dll 文件可能已经损坏,或者其版本有误。  
  W. K9 ?3 G# s4 W5 V* s$ {$ @& O5 j
LoadLibrary("Dllname") failed.GetlastError returns 0x00000485
, k1 s. j+ ^5 J9 y. c/ }* K! x. P6 X" A' I
在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“找不到运行该应用程序所需的某个库文件”。例如,键入 regsvr32 missing.dll 后,如果找不到 Missing.dll 文件,就会返回该错误消息。  " Y* ^; y! w+ }: f8 m6 V$ E, }' O

1 A; o6 N5 g5 @$ N) I  }2 uLoadLibrary("Dllname") failed.GetLastError returns 0x00000002
( x2 G  U+ E) S4 G3 R* z
8 |, `3 L! Q( Z0 u: I在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系统找不到指定的文件”。换言之,系统找不到相关的 DLL。例如,如果键入 regsvr32 icwdial.dll,而此时缺少 Tapi32.dll(依赖项),就会返回该错误消息。  $ o0 n" l: H& R4 ~: @
9 p+ {& U  U7 ]/ q/ e- A- H1 g! I- X
LoadLibrary("dskmaint.dll") failed.GetLastError returns 0x000001f
. h5 U3 Q( d4 M5 k$ I) |
. b* H) @! i# ^( m在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“附加到系统上的设备不能正常工作”。如果您尝试注册 Win16 .dll 文件,就会发生此现象。例如,键入 regsvr32 dskmaint.dll 会返回该错误消息。  * S8 G: h9 j) Q- m: q$ @
# M! R# T7 Q+ a9 P+ s( F. P) _
DllRegisterServer (or DllUnregisterServer)in Dllname failed.返回代码是:字符串
/ f" D2 v! Z+ d% {! o4 ^. H$ v8 Z* V) Y) I+ r; H, m' Y$ V/ K& p
在 Winerror.h 中搜索字符串。  
( L6 G6 S$ F% I! fRegsvr32.exe 和依赖项 - g1 x/ r) h% [/ F5 m
RegSvr32.exe 依赖于 Kernel32.dll、User32.dll 和 Ole32.dll 文件(在 Windows NT 中,还依赖于 Msvcrt.dll 和 Advapi32.dll 文件)。Regsvr32.exe 会加载您尝试注册或撤消注册的文件及其所有依赖项。如果缺少必需的文件或者它们已损坏,该进程可能会失败。  $ M2 u- D4 _& O
" I/ J( G2 r+ w8 D, R
您可以使用 Depends.exe 来确定您尝试注册或撤消注册的文件的依赖项。在 Microsoft Windows 98 资源工具包 和 Microsoft Windows NT 4.0 资源工具包 支持工具中都提供了 Depends.exe。 / [; @+ c; g! K& _' }- L1 y
247024 Tools Included with the Microsoft Windows 98 Resource Kit  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系我们|手机版|小黑屋|Archiver|电脑互动吧 ( 浙ICP备13037409号 )

浙公网安备 33032402001025号

GMT+8, 2025-12-20 08:40 , Processed in 0.078986 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表