出处:中国IT实验室
( [; H0 S9 i$ |/ Z0 N2 f( v1 L& S2 P5 y* _: S9 B
个性化Windows XP客户端的登录界面 一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。
3 p5 ]& h5 Z. |8 a" @0 c9 q1 v; t
5 w0 x% i% ^7 Y! E; A 先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2
) s3 y9 \+ S% H
2 G5 i; G/ U4 x, E 是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作: W: p% `3 t# O6 P9 C6 e+ O
0 P8 w8 j4 h7 q
% D! {2 l7 X0 j0 D# n% B ' n) O) J2 l5 t6 ~0 V, T" u. C
5 Q1 r# y1 z' J, [) N* I7 T4 ?$ B! a
在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。
8 A" m8 ]( o3 v# r. f4 X$ v6 l3 ?- Z) O- {( ]- @
不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。$ M$ ?% a5 N$ p7 K$ q% v
- X4 v7 @! `6 p& c/ v8 K
OK,下面是具体操作步骤:
9 g' o& o$ x+ {$ V$ O1 | 1. 将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
7 G7 C0 H1 {/ d) i4 V- t9 K# K+ Y2 V" j! X/ O, X8 i; M. j
2. 用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示5 p* U/ d5 H3 _- j# r6 ~/ q$ c1 r' C
, V- Z& S+ ^6 I' u9 |: R
3. 我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。
1 ?0 p; a4 z* }9 F3 @+ G! Y9 g
8 V# F8 b7 b0 A$ F5 t& I 4. 我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.0 [+ c/ t* K( L1 @' M
0 |! u0 A$ S1 o: P+ ]
然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。
' U) B1 P5 n+ p' L, ?3 ]6 @: d 5. 107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
! K. ]5 {0 i Z2 J- F2 O( N
6 I& X \: O) T1 O t4 [# f 6. 全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 # c. E3 T+ i" l
$ v8 \+ d A$ E. H ( V! s" P- _1 ]8 S5 B$ f% ^4 Q
& n3 J/ { {3 U" h2 ~8 C. d
" w: r' ^0 y$ W) h9 ^) F
' |1 p, X2 z0 ~9 O. A: p
* a$ q9 x D/ y- e( r 1 R5 i# \/ G7 b+ |" |$ S5 l* W2 [; A
. f: Z- ]$ h: C- m v
' D. p0 ^0 @$ Y! j+ {& } 个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。' l$ ]) R# V$ P6 X1 k& e! w
2 Z. U3 J$ n. O# r; e
操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
* ^! V" F0 s. |) a" K( S% v
i$ k+ F% D$ C, H* ` @echo off
( x o# R1 O7 x8 t W0 x if exist c:\windows\XPGina.dll (
; C$ m1 n' i ]+ x echo Windows Registry Editor Version 5.00 >> .\reg.reg
3 s) p3 K6 o6 R" ]3 H echo . >> .\reg.reg
1 _8 j% X0 i/ p2 g/ t/ Y5 a+ z, e echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
, G6 Z3 U* x7 o5 w: q1 t8 ~0 e echo "LogonPrompt"=" 祝您工作顺心!" >> .\reg.reg6 U) J) Q1 e: R+ v
echo "Welcome"="(BY IT支持维护)" >> .\reg.reg! k# J$ E. l& Z0 {$ r/ { s" q6 [ v
echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
. k# v$ D2 v+ c4 D$ X regedit /s .\reg.reg/ i, M; x' V* V L7 [1 _- R
del /F .\reg.reg/ @5 P0 l' n4 ^6 f
) else (: U2 j; ]8 B2 V7 d
net use z: /del a7 p- F2 ~0 u* N' E
net use z: \\FileServer\\Share "password" /user:username@yourdomain.com/ y# \3 L* c$ F( c8 J
copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n. j# w' {' T S% z8 i' J' L: J7 g4 {
net use z: /del
. |! @, _, C W, X- I )
3 A- Z0 m" X+ c9 j) P, }3 ^) A$ _! W$ u/ i8 @* U0 a! {9 K7 {' t
对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
, X8 l' _# c2 v3 a U% P
9 k4 |; v( B8 o 顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
9 s7 w" N. d7 f0 h$ z1 r3 Y& D" d7 C3 @5 D6 V: M
@echo off
) A# R0 y; k. M7 I8 `" Z! ^2 A if exist %SystemRoot%\XPGina.dll (
5 T7 R+ X7 b; o8 q7 S3 n echo Windows Registry Editor Version 5.00 >> .\reg.reg
x% S. L2 m( U5 i" { echo . >> .\reg.reg
) F& n, N4 A( [/ {; q6 Q: R echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg0 _: G2 e! s8 w' z r& }
echo "LogonPrompt"=- >> .\reg.reg, e$ z+ T3 P$ j; i; w
echo "Welcome"=- >> .\reg.reg' x9 q: y- q( }: m9 O" H/ k
echo "GinaDLL"=- >> .\reg.reg
3 C6 a* V- ^2 x! N; j; V regedit /s .\reg.reg
- |2 T$ Q ?$ r8 K2 E$ _2 U/ f" \ del /F .\reg.reg
4 {. Y( f5 u- L3 o7 u ) else (; O2 ~8 L0 a' u. S2 k, O3 \
del "%SystemRoot%\XPGina.dll" /F1 ~. u$ B( e5 C( N) ~: I
)
$ r* W2 Q* K9 b6 `3 ~9 E* a
6 N6 h2 @# s, w 最后,整个操作步骤我还想补充几点说明:
1 ~; W! q$ s' z* D& A4 d7 ]: | g* R+ `
1. 操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
- A. {, @+ x# X7 P
/ y& j. w, b8 @ 2. 在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
# H8 _1 l9 E$ d: [8 p: t5 v! \$ i. {/ }
3. 在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。
6 S+ W( h- ]( n+ u0 O" ~2 V2 ?1 R
$ E% h5 z+ p0 I 4. 如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。
/ k0 ^1 h1 o4 \8 Z m
8 i& w5 x. S1 N; I$ e" a6 L* K OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。 |