电脑互动吧

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

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

[复制链接]
发表于 2013-5-16 20:01:25 | 显示全部楼层 |阅读模式
对于那些可以自行注册的对象链接和嵌入 (OLE) 控件,例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。
3 z8 a7 r; b9 l4 o, Y
7 S& k' `, J$ r7 T3 l/ ~+ Z% uRegsvr32.exe 的用法
" n" O% Q+ m8 @  k' l. Q
6 L/ ~" V/ n2 ]4 x" v3 D5 @RegSvr32.exe 具有以下命令行选项: Regsvr32 [/n] [/i[:cmdline]] dllname
' m) U$ p( }3 r7 x: k( S& i
5 f; C7 j$ k4 F9 ?   /u - Unregister server<BR/> % b: U; B! u6 Q/ T
   /i - Call DllInstall passing it an optional [cmdline]; - E% E; d$ F/ M! {6 w# i8 D. G
        when used with /u calls dll uninstall 1 O  ]0 N# }/ Z# |! R/ w
   /n - do not call DllRegisterServer; this option must
2 T9 Y$ e" p- L% Z' g0 ]        be used with /i , U/ Q7 [* I  t7 J

1 y' w2 ?$ c# m9 b当您使用 Regsvr32.exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32.exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。要查看 Win32 错误代码的列表,请参见下面的 Microsoft Web 站点:  3 \8 \- S. F" B4 S1 |
http://msdn.microsoft.com/librar ... n32_error_codes.asp  
$ _/ \  ^6 n. B( p# F' L
" C4 r4 W! v; o0 A: W例如,要手动注册 Sample.ocx ActiveX 控件,请在 MS-DOS 提示符处键入以下命令:  , O, a8 [3 k0 f& Z/ s
c:\regsvr32.exe sample.ocx ' Z( w1 Q" ^+ e2 i% I8 k" \5 b

! }* |7 z2 ?: R- j9 v! RRegsvr32.exe 错误消息 : J" E, G% n5 _9 b1 W

4 u9 Y& V2 V3 H3 U+ @- J  `以下列表介绍了 RegSvr32 错误消息和可能的原因。  
. S1 ~6 m' `+ \; I  Q1 D" d5 \' O' @
Unrecognized flag:/invalid_flag
7 a( S' x) a' v5 d5 A
5 l" P! \) a* b1 z键入的标志或开关组合无效(请参阅本文中的“Regsvr32.exe 的用法”一节)。  
! i# z* l! k1 T# ]0 w9 O  x" [
( W' O- {5 R* iNo DLL name specified. # S; m/ H( [, a6 w2 J0 I

6 [; @& z* V8 f+ K% p# m未包括 .dll 文件名(请参阅本文中的“Regsvr32.exe 的用法”一节)。  7 N2 K/ N$ p, M- S9 K1 U7 _" N
) l4 ]$ @1 @7 X3 `
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
2 G+ d8 t4 }9 d" \
& u0 Z; S: P) _. X' g2 @Dllname 不是 .dll 或 .ocx 文件。例如,键入 regsvr32 wjview.exe 就会生成该错误消息。  
9 e5 E' R+ i  Z3 t" w( W: A* E6 k. A; b$ d2 B' S5 M" W
Dllname is not an executable file and no registration helper is registered for this file type.
; \: b1 }$ m1 z4 f* C8 f, z: Q- r
Dllname 不是可执行文件(.exe、.dll 或 .ocx)。例如,键入 regsvr32 autoexec.bat 就会生成该错误消息。 3 q- ~! ^; a9 H! \

- n  @/ h5 H0 E# B4 p5 ^Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
' Y) q9 N- d$ G6 u5 w7 y$ k
* B1 F; I2 s" n, cDllname 可能未导出,或者内存中可能有损坏的 Dllname 版本。请考虑使用 Pview 来检测该文件并删除它。  
2 t, h: w0 j2 ~5 i# W  P& v6 f2 y8 {0 S5 X# n3 ~
Dllname is not self-registerable or a corrupted version is in memory. / x9 A9 I& i: F9 L' p$ x7 C
+ ]: Y4 j7 {5 S' D: B
例如,键入 regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。如果您怀疑内存中有损坏的 Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章:  
" c5 o5 @# r4 ~) g7 Z) p197155 如何终止孤立进程  
! \! d# C) K8 _0 Y9 {! C
9 i2 S/ _# o  P0 g: |" R9 ^OleInitialize failed (or OleUninitialize failed).
1 Q2 O: b: d# c% ~+ X2 \' Y. O
/ F2 i6 {+ m9 b* j) _7 yRegsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。如果对 COM 库进行初始化或撤消初始化的尝试失败,就会出现这些错误消息。例如,Ole32.dll 文件可能已经损坏,或者其版本有误。  . P2 d8 Z% p0 d# I1 u% I
6 t) U4 W/ S2 v/ A! S
LoadLibrary("Dllname") failed.GetlastError returns 0x00000485
: g/ v; G3 c2 U$ I' o: G7 Y% c  V3 m3 o2 P( l3 V2 j; ^
在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“找不到运行该应用程序所需的某个库文件”。例如,键入 regsvr32 missing.dll 后,如果找不到 Missing.dll 文件,就会返回该错误消息。  / p1 b) R5 J( d2 S
8 y$ ~, u0 l0 Y6 L
LoadLibrary("Dllname") failed.GetLastError returns 0x00000002
* W$ w+ K8 ^0 I# }  G: D6 J1 B. t7 g/ _/ e: Z
在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系统找不到指定的文件”。换言之,系统找不到相关的 DLL。例如,如果键入 regsvr32 icwdial.dll,而此时缺少 Tapi32.dll(依赖项),就会返回该错误消息。  ) Q5 b+ h1 v6 g$ ~3 B$ h" {
4 V) s( V; ?$ Q  ^! q
LoadLibrary("dskmaint.dll") failed.GetLastError returns 0x000001f
, b# o! F/ U6 _0 I/ h! P  B' M9 S" S% B
在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“附加到系统上的设备不能正常工作”。如果您尝试注册 Win16 .dll 文件,就会发生此现象。例如,键入 regsvr32 dskmaint.dll 会返回该错误消息。  
% |# t2 B& W. I3 p. n1 @) m2 `' y1 j
DllRegisterServer (or DllUnregisterServer)in Dllname failed.返回代码是:字符串 " a, p: u' s9 `! o) j1 e- {

: V, I9 ]0 w7 d2 J4 a$ E. k# a在 Winerror.h 中搜索字符串。  
' n# c4 E* ]8 J! FRegsvr32.exe 和依赖项
# ~# u" w2 P- a4 A& a. vRegSvr32.exe 依赖于 Kernel32.dll、User32.dll 和 Ole32.dll 文件(在 Windows NT 中,还依赖于 Msvcrt.dll 和 Advapi32.dll 文件)。Regsvr32.exe 会加载您尝试注册或撤消注册的文件及其所有依赖项。如果缺少必需的文件或者它们已损坏,该进程可能会失败。    b5 y$ Q; B  _1 T
0 L2 s: A' G2 \5 J. t
您可以使用 Depends.exe 来确定您尝试注册或撤消注册的文件的依赖项。在 Microsoft Windows 98 资源工具包 和 Microsoft Windows NT 4.0 资源工具包 支持工具中都提供了 Depends.exe。
5 b4 `) u: l+ L0 ?247024 Tools Included with the Microsoft Windows 98 Resource Kit  
回复

使用道具 举报

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

本版积分规则

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

浙公网安备 33032402001025号

GMT+8, 2025-9-7 20:18 , Processed in 0.051692 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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