电脑互动吧

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

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

[复制链接]
发表于 2013-5-16 20:01:25 | 显示全部楼层 |阅读模式
对于那些可以自行注册的对象链接和嵌入 (OLE) 控件,例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。9 U$ m7 [0 B9 ?3 E5 R

  u$ ]5 t/ M% G5 k) }. L1 Y. vRegsvr32.exe 的用法
4 k5 U. M+ i6 S7 i; l% \9 i
4 W- _7 [  Z) Q7 ]! eRegSvr32.exe 具有以下命令行选项: Regsvr32 [/n] [/i[:cmdline]] dllname ! J% I, w/ w/ X6 q* Z7 `# \& d

! T% F! |5 n8 F2 J  l- ^6 i   /u - Unregister server<BR/> 8 h6 u! p; u, i
   /i - Call DllInstall passing it an optional [cmdline];
! q0 S8 q: N' O. r6 J; G2 o) ?( i        when used with /u calls dll uninstall
4 G' {; h4 w5 y0 n. g5 {   /n - do not call DllRegisterServer; this option must
1 \, B3 T  g! W' _, U- @$ X        be used with /i
; F5 b' n2 m$ M3 J: ^9 }: ?+ @# c7 w& l
当您使用 Regsvr32.exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32.exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。要查看 Win32 错误代码的列表,请参见下面的 Microsoft Web 站点:  
4 T, H8 {% O1 s7 C& Thttp://msdn.microsoft.com/librar ... n32_error_codes.asp  
8 U( G# b6 x* c& R& A# f$ L) v
% g& I3 G3 Z) e$ |8 ]例如,要手动注册 Sample.ocx ActiveX 控件,请在 MS-DOS 提示符处键入以下命令:  
1 `  e- j+ K$ I9 c/ T* {+ Dc:\regsvr32.exe sample.ocx
  `! ]0 O+ K; ]# S) }9 i( \' E
& s6 l$ X( s2 z- _0 J1 XRegsvr32.exe 错误消息 $ B6 M6 s2 ^* }# U

. t. J2 G3 X# }: z1 Q以下列表介绍了 RegSvr32 错误消息和可能的原因。  
$ S5 D  N8 L( L6 l' E  V/ J, a- y# G( Q+ s3 K$ h1 d! w$ j/ _
Unrecognized flag:/invalid_flag ( ]; F( z4 _2 i2 o8 c
2 ?) H9 I- W" M0 B, U, f. R5 x
键入的标志或开关组合无效(请参阅本文中的“Regsvr32.exe 的用法”一节)。  
+ b- S9 Q8 ~8 h2 O& ~
  d9 _) v4 k" Y8 UNo DLL name specified. 9 T# F( v! C% k" ?6 a0 M- G# C
( n5 _4 E' S( e. T* G" P
未包括 .dll 文件名(请参阅本文中的“Regsvr32.exe 的用法”一节)。  " b/ t' R0 A; d% l! ^. a

# i4 W' U! E5 k$ U; EDllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
* h+ I$ A/ e4 _# m( k: o( [8 R7 c! l* S  }4 `1 e
Dllname 不是 .dll 或 .ocx 文件。例如,键入 regsvr32 wjview.exe 就会生成该错误消息。  
& s. E3 B) V6 X( c; e  n
: \2 X8 H" b  C4 h5 gDllname is not an executable file and no registration helper is registered for this file type. ) c2 R. S" f. w0 a+ M9 X
9 g0 R6 Y! o' K4 R
Dllname 不是可执行文件(.exe、.dll 或 .ocx)。例如,键入 regsvr32 autoexec.bat 就会生成该错误消息。 : u4 H* ~) n' W

8 y% J; [0 ]( m* ~2 _6 x( H: s5 ^* q  nDllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found. 1 S. A9 K6 i0 ^  }: f# q

! T" g6 s1 |$ C5 W! B8 EDllname 可能未导出,或者内存中可能有损坏的 Dllname 版本。请考虑使用 Pview 来检测该文件并删除它。  
! W8 ^% p5 f  l8 E/ W; S; L* f' H! n' H) f! s
Dllname is not self-registerable or a corrupted version is in memory. / @. v* D' v9 |4 W& Q$ P2 Y
% |/ [/ ]- c1 b5 {& m3 Y
例如,键入 regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。如果您怀疑内存中有损坏的 Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章:  
& D/ w8 s$ p5 ]197155 如何终止孤立进程  
( f' v/ Y, [) n* u7 q' z8 ?" Q5 W% |$ J# F
OleInitialize failed (or OleUninitialize failed).
/ W. e0 O4 [) ]1 }5 b$ B
3 n, Y8 A3 u8 O1 VRegsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。如果对 COM 库进行初始化或撤消初始化的尝试失败,就会出现这些错误消息。例如,Ole32.dll 文件可能已经损坏,或者其版本有误。  
+ M& L; i4 M$ ]2 R! ]8 o7 g' G2 y% X: @# \" {) o; H# y
LoadLibrary("Dllname") failed.GetlastError returns 0x00000485 % Y$ Y0 T' W# o9 m, n' P# s
! T) }( ?0 w4 v& j
在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“找不到运行该应用程序所需的某个库文件”。例如,键入 regsvr32 missing.dll 后,如果找不到 Missing.dll 文件,就会返回该错误消息。  ; a* O& A. X3 L/ V" r6 ]
* t( u: V" X+ n# n* f. S
LoadLibrary("Dllname") failed.GetLastError returns 0x00000002
3 }9 }$ O- B) j( V3 H: ]& u& d9 v+ K5 o' _' A7 \' D- A& @9 ~- a, ^
在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系统找不到指定的文件”。换言之,系统找不到相关的 DLL。例如,如果键入 regsvr32 icwdial.dll,而此时缺少 Tapi32.dll(依赖项),就会返回该错误消息。  + g* Z" e) i: R( N

2 |! Z; l7 m  ~" H0 ]) L9 WLoadLibrary("dskmaint.dll") failed.GetLastError returns 0x000001f + f; T- D# e8 B/ S, i! C

4 D1 }! w7 R: b; @# l. ?在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“附加到系统上的设备不能正常工作”。如果您尝试注册 Win16 .dll 文件,就会发生此现象。例如,键入 regsvr32 dskmaint.dll 会返回该错误消息。  6 a8 a+ i) N/ M, K5 J

7 Z* ?7 A" N$ _: }: r0 ZDllRegisterServer (or DllUnregisterServer)in Dllname failed.返回代码是:字符串 & d& `+ E$ c: e. c6 K
4 j" V' \2 ]& i+ Y" n* x8 C! w
在 Winerror.h 中搜索字符串。  5 @4 b# D% P/ x+ o& `
Regsvr32.exe 和依赖项 . U- `  v( S+ F) @6 W  u
RegSvr32.exe 依赖于 Kernel32.dll、User32.dll 和 Ole32.dll 文件(在 Windows NT 中,还依赖于 Msvcrt.dll 和 Advapi32.dll 文件)。Regsvr32.exe 会加载您尝试注册或撤消注册的文件及其所有依赖项。如果缺少必需的文件或者它们已损坏,该进程可能会失败。  ; F) E1 N6 r8 v/ b% J

0 {' p& ~+ o$ L: w5 D+ s您可以使用 Depends.exe 来确定您尝试注册或撤消注册的文件的依赖项。在 Microsoft Windows 98 资源工具包 和 Microsoft Windows NT 4.0 资源工具包 支持工具中都提供了 Depends.exe。 : {& f/ x/ x/ W9 A- j
247024 Tools Included with the Microsoft Windows 98 Resource Kit  
回复

使用道具 举报

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

本版积分规则

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

浙公网安备 33032402001025号

GMT+8, 2026-2-12 15:32 , Processed in 0.463557 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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