WK綜合論壇, WK综合论坛

用戶名  找回密碼
 立即注册
查看: 1089|回復: 0

[技術討論] 打印机经典攻略

[複製鏈接]
累計簽到:278 天
連續簽到:1 天
發表於 2014-9-13 23:22:36 | 顯示全部樓層 |閱讀模式
VIP精品區,資源無限好賺金任務區,輕松賺金幣
加入VIP,享受高級特權宣傳賺金又升級,超級棒
在阅读本文的时候,请严格按照故障现象进行比对排错!
" m4 w  R6 g( ^) Q4 @. u& Y5 M( g* W+ P
如果涉及到注册表操作,请务必事先备份相关注册表项,并新建还原点。
+ d; i! q$ P! n. N* T# h- i9 q! k
/ ^4 l( W' J1 b9 g* a" C如果系统无法顺利启动,请按Reset键重新开机,然后按F8,在Windows高级启动菜单上选择“恢复到最近一次的正确配置”菜单项,这样就可以先前的HKLM\SYSTEM\ControlSet00n覆盖错误配置的CurrentControlSet(ControlSet00n中的n由HKLM\SYSTEM\Select的LastKnownGood键值指定)。
6 }7 X/ m* Z) [9 K" ]
9 L- ?# ^$ Z4 l: b0 D  t错误2:系统找不到指定的文件
4 X- N7 h% ~/ N7 ~  G2 M
' Y2 I+ n: ]8 E6 ?- w1.故障现象9 j% D( j9 q2 R7 n4 B" \$ j9 v

% k7 s: k6 _5 k- L. U' s尝试在“服务”管理单元窗口手动启动服务是,系统提示“错误2:系统找不到指定的文件”(Error 2: The system cannot find the file specified.),如图1所示。
" X9 k' h7 S8 I! @2 W6 Z8 Y. U
9 }2 ^( y8 g5 e5 O% C
1 W+ E. N1 x9 ^% U4 f$ \* O
3 C# k$ a2 N4 L( {2.原因分析$ D' {1 A1 j  `0 N3 o! w6 H8 Q

: @1 J/ G! L- d" C! a0 i两种可能:+ L5 |* O- i4 t: y8 E2 y% t) T

- ]% P( V; {/ Q% @(1) 服务的可执行文件丢失或者被破坏。% e! {: o+ x7 _4 h2 M

5 Y5 e4 w6 }0 y: W4 \0 X(2) 服务相关注册表键值ImagePath的数值数据被篡改,导致SCM无法加载服务的可执行文件。7 z1 ~8 V# x5 z7 b  ]8 W  G/ r
/ {# h+ A3 f" R
在“服务”管理单元窗口里可以看到每个服务的可执行文件路径,请仔细检查如图2所示的可执行文件所在路径,如果和参照系统的正确配置不符合,说明注册表键值ImagePath的数值数据有误。如果此处的配置没有问题,则说明可执行文件丢失或者被破坏。 4 C8 E! ~. g! ~6 b0 ?5 h; y

" M. t, ]6 k" E7 M& i4 F+ a% C) H
8 R7 B, t# W5 t6 ]8 o' D3.解决办法. S0 u4 @/ y" l" P/ U4 L1 A5 ~
; D4 E" l+ Q8 r! H" O+ \, Y
以“Task Scheduler”服务为例。1 s$ I% N7 ]# ~& G3 a. H0 D
$ e5 p  l" D# l, c/ W
如果注册表键值ImagePath的数值数据被篡改,可以定位以下注册表项:9 H  Q5 C- e5 [- f7 T$ [

, P# g* `7 y! h) K) cHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule6 w  I8 |  f* Y! y
6 |' G# ]5 G5 Y6 ?: A
在右侧定位到ImagePath键值,将其数值数据修改为正确的值,并重启系统。1 M9 l+ _/ t7 j. [3 u3 O
' w/ X* q4 [4 K1 R- K( n
或者借助sc命令:
" q# g2 x% P4 R# ^' r) q1 l( h6 }# l! V. _4 G! X
sc config Schedule binpath= "%SystemRoot%\System32\svchost.exe -k netsvcs": E$ `1 H  g* t! Q. S

/ F  j$ D4 U3 {" W! g6 d+ ^! F" @如果是可执行文件丢失或者破坏,请用正确的副本进行替换,并重启系统。对于本例来说,可执行文件是svchost,如果该文件被破坏,系统将无法正常运行。
2 Y# ~4 @7 X. Z0 i7 e& N! R0 h( t& e3 x( ]: v# f
错误1053:服务没有及时相应启动或控制请求7 \- j9 s7 ]% N6 I" V( R( N
3 k3 }: t& A* N0 ^9 ]( M$ z0 v4 {: }
1.故障现象
4 {. M; ^% p4 |% x: v
- E8 Q' L$ O  N/ n6 }$ M尝试在“服务”管理单元窗口手动启动服务时,系统提示“错误1053:服务没有及时相应启动或控制请求”,如图3所示。
( C6 i6 w$ }$ P' l4 S
) Y/ x* J8 H! E8 \* k, V  x  n: {+ q3 _9 H. t, Y
/ X) y( V6 o& d/ b, @
2.原因分析
5 C6 ~# {. ~* n' f+ }( ?. }
5 R. s/ Y% M0 Q' K, r9 ~" p如图2所示,可执行文件的附加命令参数配置有误,会导致问题。
8 e# i3 \6 r# ^3 }8 Q
+ A0 }0 X4 P8 K! Q3.解决办法
9 e9 ~( c' `, J' G5 }9 `  B6 w
' f2 C! ]8 u9 {, z0 V6 f参照上述的方法,用sc命令或者注册表编辑器,对附加的命令参数进行排错。% |" K/ o  j0 D

2 e2 f) T% ^$ k$ M, E! p错误1083:配置成在该可执行程序中运行的这个服务不能执行该服务' R: X  R0 D& A. k* ^$ m

5 W2 k. {. \, j: L  E1.故障现象
  C* i: q7 ^' N( X
1 z3 X; |! n$ o( f% K( ?( n尝试在“服务”管理单元窗口手动启动服务时,系统提示“错误1083:配置成在该可执行程序中运行的这个服务不能执行该服务”,如图4所示。2 Y& A% s% v- S% ]1 z
* P, y- D& u. i% `" F1 B9 `# M! @
" f( g/ l( b/ {4 r) N' j

( R, R4 j7 u3 H2.原因分析
. F# V( [+ k6 }8 ]5 b2 F8 Z$ L' k! k$ \% M1 R" B3 v
该故障通常在由svchost服务宿主进程所启动的服务上发生。大家知道Windows XP SP2最多可以启动七个svchost进程实例(实际上启动六个进程实例),分别负责启动一组服务。每个svchost实例所负责启动的服务由以下注册表项决定:% Y* ~1 H$ f+ D3 e: ^# @
) b, H, e4 E2 w8 K% A  p6 d, `
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost
6 x+ s3 Q3 b9 I7 H$ `$ }+ C: `& d. Z& T6 G8 Z5 w* M  k
其下共有七个键值:DcomLaunch、HTTPFilter、imgsvc、LocalService、netsvcs、NetworkService、rpcss和termsvcs。每个键值都定义了一个或者多个服务,也就是对应每个svchost进程实例所能启动的一组服务。& _, {. i6 P& p8 V+ ~$ B

8 o* U* `' l7 U+ Q% g4 L0 y本例中“Task Scheduler”服务的可执行程序参数是“svchost.exe -k netsvcs”,对应的svchost进程在启动该服务之前,会先到HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost下的netsvcs键值里查找是否有该服务的定义,如果没有,就会出现该故障现象。! r6 O7 _5 j( u6 o2 F- B

/ F0 J1 `) Y# A/ n3.解决办法  N$ c' ~" A. V( J" S

7 e5 s( H: H% ?很简单,首先打开该服务的属性对话框,查看其可执行程序的命令参数(本例是netsvcs),如图2所示。- c' e4 u, y4 G) E7 W

2 X- E) m3 I0 d/ _2 M0 B然后进入以下注册表项:
  T7 [: ?* A  U, H6 r- y
- B9 O1 A, S6 M- F) U! fHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost" j% i) `( v  t& X
+ O4 g- `3 N0 a$ g4 X
在右侧定位到对应的键值,本例是netsvcs,在其数值数据里添加该服务名即可,本例是Schedule,如图5所示,并重启系统。
0 B) e& E5 G* L2 ^! d! j5 `% L8 x
( [. F: D  P0 C' z2 g+ g/ L1 A( y, p0 y, T1 o

. h/ H7 G5 f, C8 @5 k% @# }1 }! r% y- Y$ i% P! u/ Q8 O
提示 为什么通常只会启动六个svchost进程实例?都是TermService服务惹的祸!TermService(Terminal Services)这个服务非常另类,不仅仅出现在DcomLaunch组里,同时还独立出现在termsvcs组里,然而在“服务”管理单元窗口里,该服务的命令行为“svchost.exe -k DcomLaunch”,也就是说实际上并没有一个svchost进程实例负责启动termsvcs服务组!
8 P) U; i0 |- d: H1 W( o6 G9 m4 @3 l  k, W7 D5 W5 |5 w

' j. b* Q+ F5 P  l" B, i4 `! \( y错误126:找不到指定的模块( d. x% u. {2 v3 }

+ u% W$ B: t# `! y" `' ]6 @1.故障现象; l( w3 {; R4 e0 [! [

; Q9 X, K! h$ T( h) q尝试在“服务”管理单元窗口手动启动服务时,系统提示“错误126:找不到指定的模块”(Error 126: The specified module could not be found.),如图6所示。6 ^: J# U1 R- u' f

0 Y; l4 }9 U( T1 O# A, {
) t, B2 P  U/ ?/ O2.原因分析- |" e) z* d2 T2 @: D' S- B
7 v7 J# i& E( q3 L+ e7 H
该故障通常在由svchost服务宿主进程所启动的服务上发生。这一类的Windows服务,其实是以dll模块的形式插入某个svchost进程。如果该dll文件被破坏,或者注册表的相关键值被篡改,都可能导致问题。
( o3 [9 @6 `6 D1 b$ f5 _2 W! B6 d, g) A8 A/ O! N# ~
这类服务所对应的Dll文件,是由HKLM\SYSTEM\CurrentControlSet\Services\ServiceName\Parameters注册表项下的ServiceDll键值所定义的(此处的ServiceName是指服务名),如果该注册表键值出错,或者对应的Dll文件被破坏,就会导致这个问题。6 d, u5 z+ c4 s# v% ]- R2 ~. ?
. }3 q, X8 |, v1 p: S; Z
在微软新闻组里有不少网友抱怨无法打开“磁盘管理”窗口,寻根溯源发现是“Logical Disk Manager”服务无法启动所导致。其中有一个case是系统被木马PCShare所感染,木马修改了“Logical Disk Manager”服务的注册表键值,把HKLM\SYSTEM\CurrentControlSet\Services\dmserver\Parameters注册表项下的键值ServiceDll的数值数据指向木马的文件“%SystemRoot%\System32\drivers\Ybfbqufe.sys”,尽管后来利用杀毒软件杀除木马,但是杀毒软件未能处理被木马篡改注册表键值,导致无法打开“磁盘管理”。
+ C1 z/ L: b7 M9 V- O# |( s! ~/ V
注意 不要将该故障和“错误2:系统找不到指定的文件”相混淆!
- |  W) J( N% F5 Z$ o
0 g, P9 S' [; y! W3.解决办法
! u" D; }8 z# Z; T8 W& r& W# }% b) S: Y, M+ Q1 K8 u
对于“Logical Disk Manager”服务的问题,在以下的注册表项:
: i$ s6 b3 U8 c) c) E! J% X) f4 |6 k, O
HKLM\SYSTEM\CurrentControlSet\Services\dmserver\Parameters% _% N" P& ]4 B. g; m
- M9 I- h+ m) o8 U8 e; v  s
确保将其下ServiceDll键值的数值数据修改为“%SystemRoot%\System32\dmserver.dll”。5 X% M# E2 _3 ]

6 n+ v, g; ~. ]/ C# [如果注册表键值没有问题,请确保用正确的文件副本替换原来的dll文件,并重启系统。: b3 |5 Z) R3 z& p5 h  g

# m3 g8 z+ D1 i2 I1 h2 l- L错误1079:此服务的帐户不同于运行于同一进程上的其他服务的帐户
4 S: _8 |/ O, ~9 @& g1 g$ P5 f# i8 p# @& m, V% e* v8 E/ _
1.故障现象! W5 v/ Z/ @/ n, k( J# j

, w* w% B! m8 G尝试在“服务”管理单元窗口手动启动服务时,系统提示“错误1079:此服务的帐户不同于运行于同一进程上的其他服务的帐户”,如图7所示。. C0 b, ~4 d5 V7 L0 Q

  ~# ]. }2 f1 H1 P' @
2 m9 v/ Q# t/ b7 K, q' a
7 G: c/ T8 g! s, n" r: T# t! P2.原因分析
4 E: J, k& C( _% Q6 S# \  J, ]+ s; v% a) R" M
该故障通常在由svchost服务宿主进程所启动的服务上发生。前面说过Windows XP SP2最多可以启动七个svchost进程实例,分别负责启动一组服务。一组服务中的每个服务必须和对应的svchost进程实例运行在同一个启动帐户下。6 X& l' s% e  W( F2 J- ~

' B7 O" y) r7 ]* c' Z- y  e. e# l, V2 y, f例如Alert服务属于LocalService组的服务,其对应的svchost进程实例运行在Local Service帐户下,如果错误地将Alert服务的启动帐户修改为别的帐户,例如Local System帐户,就会报错。$ @3 U) y8 x7 t# Z. P( p. L
2 L* I9 ]' n& |4 Q' k) a
3.解决办法
& p% {# z: }  _( W" |% ]; S0 y, X7 I: r
首先根据该服务的可执行文件路径属性找到其所属的服务组,例如Alert服务属于LocalService的服务组,然后确定同一组的其他服务的启动帐户,将其修改为相同的启动帐户即可。
5 q7 Q3 i  X" Z8 A# i; o. P3 y9 T" E: g

- a+ R& d/ g& K# u) N& |0 [: ^. ?/ w  o& [9 h
错误1068:依存服务或组无法启动
/ n. `+ u) C+ X; q
' T# H& h7 N, v9 I2 w! ]; E9 }1.故障现象$ s& ~' f+ s  W$ ?; U

; j- ]4 P2 U) d/ t/ |尝试在“服务”管理单元窗口手动启动服务时,系统提示“错误1068:依存服务或组无法启动”,如图8所示。" \6 v- ~0 ^9 {0 R% W( s" B

' \7 [& @" g' m& ^4 S+ g/ G; q; R. b1 W( C: l6 V7 i8 D2 Z1 O

! Q) z, v& R/ K0 M, H( w2 s2 i7 d- }2.原因分析
: b- `% [) S5 \2 i9 `0 r
6 P9 _/ C5 E2 A" y& x- j某些服务依赖于其他服务或者驱动,只有这些依赖的服务或者驱动都启动成功,该服务才能顺利启动,否则就会报1068的错误。
* [& S9 @) _! y& [( ~% Q( }4 u
& Z5 J4 R, k% x2 y2 l: F9 j- T3.解决办法, z) ^- S! L+ p

" m9 u0 M7 {; p首先我们要对这些不能启动的依赖服务或驱动进行排错,通常来说,可能有以下的一些原因:
1 w: c: c* P2 D6 s' [5 n* K
! J& Y$ C2 C9 B: m& q$ @(1) 由第三方应用程序向系统服务添加额外的依赖服务,一旦这些额外的依赖服务出错、或者被删除,而注册表中的相关键值并没有做相应的改动,则会导致问题。4 a# e, m. U& O

4 ]' O& Z# X* `# I(2) 这些依赖的服务或者驱动被标志为禁用。
* |! ^( e5 x& k  c! f" j5 |( H/ p- @% B
对于第(1)种情况,这里有一个实例(来自于微软中文新闻组):
# q, P. k/ A* o5 l$ d8 H2 H; Z/ a- ?0 \4 D& Z' v% z% A  c
问题:打印机是Legend LX1+1 1201i-2401i,现在无法正常使用,在事件查看器里的错误日志如下:+ @7 z1 M3 b9 q% W
- ^8 \! V- H) s5 x, _' R1 r4 N3 r
事件来源: Service Control Manager
0 ~# n3 T7 R( d. I. v: Z+ x+ o7 J# I/ D) G" i) P/ }
事件种类: 无1 ]9 V, n+ L9 o7 M' O

# h2 P8 }0 `# `, G9 X( B8 t事件 ID: 7003! S: {" X! d6 j0 h- r
( y' _& z, f6 K  g! n
日期: 2006-3-22! ^, l$ h0 k* q0 a
0 {* L# k: l6 ?% I
事件: 17:57:45+ n( i3 D8 T( {4 f

! Z/ u" R) {7 l; B/ g$ R1 K0 B- Q* }用户: N/A
; Z% f! e3 y* P, b  v7 z% n0 _
6 z' ~% G1 L" m' h, h' F2 S描述: Print Spooler 服务和下列不存在的服务存在相依的关系: LexBceS
# z: ~/ X' m, C0 V8 s
3 G1 N/ ~, [& M9 Q回答:联想应该是OEM利盟的打印机,所以系统会安装利盟的驱动程序,该第三方的驱动程序会给系统的Print Spooler服务添加一个新的依赖服务LexBceS,由于某种原因,该依赖服务LexBceS破坏,连累Print Spooler服务启动失败。
0 i" L- v5 b& H& w1 D2 G$ g1 P: u8 D
可以在命令提示符窗口运行以下命令恢复Windows默认的依赖关系(Print Spooler服务默认依赖RPCSS服务):, B, N# I- H  g
9 A. X; ~4 O: ?. Z; T
sc config spooler depend= RPCSS' o1 s& E8 y6 h' ~: t+ `. s) G1 a

9 q+ e* m$ W  u- o4 P: @# \当然,也可以打开注册表编辑器,进入以下注册表项:7 A8 t4 I' P/ |4 E' u9 X0 [( _% _$ Q
7 s/ C  a2 ~7 n* Z6 A. J
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler6 {# l4 ?+ i9 |  Q  h, t; U. d

5 g% A* ^1 b2 w5 C. f在右侧的详细窗格里找到DependOnService键值,确保其数值数据为RPCSS,删除其他任何的依赖服务。5 t8 B6 A0 \- r$ M
9 n+ `1 D1 x! e6 \6 B1 N: [# l
错误1747:未知的验证服务: }  X9 n/ D, n3 m

; X& |; c) m8 W! c9 d+ G- v1.故障现象
2 L) c* J: Z5 x" R" h
+ d, m: n5 I* g' d1 C尝试在“服务”管理单元窗口手动启动服务时,系统提示“错误1747:未知的验证服务”,如图9所示。. _! P9 F5 r2 |+ n6 |& L- r$ m

% Z: _. Q0 B! S5 |* S
0 B9 K- w# {6 m* q2 J' q! R. Y9 g% c- X& G& V* |% ^: Z. P; ^& n
2.原因分析7 f: g0 l" O' b0 d3 `- [+ N" c

; Q2 z* S8 [$ s  r. b- k5 B未安装Microsoft网络客户端,就会导致某些服务无法启动,这些服务可能是WWW、FTP、IPSec Service等和网络有关的服务。
% q7 o' h) J2 C; u2 o( t
. o5 C3 S+ a  t7 n3.解决方法
" V3 s6 D! H# H4 j, R+ c0 W6 m- W
% R" I! \* V% C0 m安装或者重新安装Microsoft网络客户端,重新启动即可解决问题9 N  X' `3 {5 p" J& }
回復

舉報

 分享同時學會感恩,一句感謝的話語,就是最大的支持!  歡迎交流討論
您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則


快速回復 返回頂部 返回列表