出处:中国IT实验室
+ M/ [; @% I* J/ Y) d2 Q$ |5 N: z9 \$ P& s4 H, I
个性化Windows XP客户端的登录界面 一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。! u+ U- _" e, A$ ]. y
, N3 E' j+ \% j6 @0 T/ }
先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2
4 x0 J _1 {7 f- r/ `( k: [+ e5 P9 K5 e4 @
是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作 y7 q: \6 j8 }/ ~
6 X3 d x8 H5 o 7 J# e8 W" i% P' H
. r- O2 d; G% ~# H ( Y0 J5 j& N' Z, n9 @
- Y& R6 W" y T( V 在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。9 z, ~9 F I# ~0 t) G4 T" p
% y8 j1 v8 t! Z' T5 u# H7 u: |
不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。; s& m4 g8 j5 U* V. D& f
( } u+ O9 D! L. q I
OK,下面是具体操作步骤:
$ h6 U1 \! b7 _ 1. 将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)! u, w0 ? F+ B7 }0 v
2 y# r U; ^. t6 M7 t+ \ 2. 用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示
% J# x0 N E' n4 U$ D- r! I! M4 p' H8 Q, ^$ }, y: [( |
3. 我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。7 V0 ?% C+ q3 O; O' u3 f
1 T! s' F+ H0 r. t 4. 我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.% K- t$ c! P0 w& O
4 k) k" q' f! D6 }* Z8 F& X
然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。
+ w( V; i4 h0 z- _& o 5. 107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
; e7 D, H" D; |2 m/ }. Z" r9 _# A; W' S9 s: c6 d
6. 全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 ! W! [( X/ y0 J* @. r( ~) _! t' R$ k
8 L, M* y' P& K& C9 c* S/ W' ~ " C1 d* g9 W5 N; t
3 w1 g; x9 Z. E& W) }/ b* o0 e( ~/ r; d
! b) D: ]2 r; w( @# i9 H1 _' v4 l& r
& G: X7 ]& J% i9 B' B5 e& z$ n
( [6 c6 b! [6 W$ |2 `
! ^( `4 c2 _, L+ p" ]. Q* h
1 B* |# {$ R5 B3 t# ^/ g6 A, |; [ 个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。
& M. B+ U3 `) K
# P5 j V# m U6 m. z) ^" e 操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:8 y: J7 p) [+ x$ d" L
' X: K% G8 _+ o! O: H; |
@echo off
9 m1 l8 u5 D0 Y$ }# w: d if exist c:\windows\XPGina.dll (
% ]! q9 j J; |( i; j+ a echo Windows Registry Editor Version 5.00 >> .\reg.reg
) r1 O- a1 p6 { G4 `4 ^ echo . >> .\reg.reg$ }( L' x3 W5 s* I# ~+ M; R, S+ X8 n
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
3 \6 _7 m6 K' Q6 w/ D echo "LogonPrompt"=" 祝您工作顺心!" >> .\reg.reg% E7 h* _, P$ r6 H- m/ K
echo "Welcome"="(BY IT支持维护)" >> .\reg.reg
4 D3 N+ J. m; ?0 h- `& o7 C) r echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg1 M# t$ E5 M1 s% M
regedit /s .\reg.reg
- v& F' s4 C; C5 l" V" E( c% J) ?/ U del /F .\reg.reg
: O' B2 t3 V- L' \ ) else ($ X; L( l c" R
net use z: /del* T& w) Y) e @( N6 Y2 J
net use z: \\FileServer\\Share "password" /user:username@yourdomain.com) l* d- c+ E, ~' o
copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
: y/ l- w+ O, ?% F net use z: /del3 H- R |3 D# i7 W& G
); C7 B7 M- Y6 t6 c5 F
; Q5 d0 f6 \2 R8 E; D
对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
i3 C; _7 Y+ ]2 V+ p( V6 j/ P( c; {0 e8 o% T
顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
" \% C- Q5 i" t
0 s& |: [8 x1 d6 I+ z) ?2 w @echo off1 F, L& m. V+ _' O
if exist %SystemRoot%\XPGina.dll (. |4 _4 T5 W, C: T3 V
echo Windows Registry Editor Version 5.00 >> .\reg.reg6 x7 A0 A. W2 d$ A. W
echo . >> .\reg.reg; q/ T/ H3 _6 U$ s" |" h
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
( p$ w# R6 K# s% h echo "LogonPrompt"=- >> .\reg.reg
& r( d) s, Y6 y( G echo "Welcome"=- >> .\reg.reg. A3 k/ M: @2 ]7 s4 ~+ R
echo "GinaDLL"=- >> .\reg.reg
3 y3 Q# d/ v, m* W0 Y5 [- b regedit /s .\reg.reg
& n3 |4 m p9 _ del /F .\reg.reg
/ G! m9 z1 }' t: R7 Z: n; a0 s ) else (
: P$ d# P$ i. U+ W: O; F del "%SystemRoot%\XPGina.dll" /F2 q# a9 d! Q' Q
)+ w( v _! h+ e1 N j$ s- x; i7 l
; B3 {, G, y) u
最后,整个操作步骤我还想补充几点说明:
! W: W$ U7 }$ E% H7 U' w$ @ s
8 T- O7 D& H$ E 1. 操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。- g$ w2 v0 u( c. k% n; r
8 U) o) X0 P2 r 2. 在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
) t* I& ~2 c: N# I3 @7 T
# W. J7 e2 e5 C! ^; f* ]+ f' ^ 3. 在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。. S1 K- f: C' l+ T
* R" ?, D. P/ t, t8 o: E
4. 如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。5 }& T9 ^1 F( [/ B$ Y
5 I0 t, d' r6 ^
OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。 |