出处:中国IT实验室
% R# I/ E9 @( G1 V3 s2 Z1 b1 I& |. S% z
个性化Windows XP客户端的登录界面 一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。
, I$ s7 R" I9 ?9 v
5 M N7 e4 V- ^6 U; m2 F* I1 @ 先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2, Z9 s* c0 e; V' O
7 q7 I6 a! @! t2 F: G, c' d
是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作
6 g2 w! _1 [4 z5 v- k+ \( F. S 2 i* U# @& t2 A) \3 g/ P! y
$ o+ z9 b- o# @3 a9 _ + ^1 x" | |0 `0 x
" d$ m; h; }9 J; p) x9 x" v
, K. w4 x* _! g' X" Q 在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。
+ Q# @& o5 I* \- M! N
2 C* @2 o/ M8 z2 R+ v0 V 不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。) u4 a% H/ Z$ ^$ \: |; l ~
# W9 J- x" A1 ^# x OK,下面是具体操作步骤:
! ^+ q% y; r/ r) w+ g$ Z 1. 将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
- I, s! _% `2 Z2 t0 y" W
2 q7 _& g# p# W, J- F- t6 Y& F" O 2. 用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示
% G! B* P2 z0 h, r3 J F; p' d: A" L; `9 W
3. 我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。* ^; N) [6 i! j2 k0 L3 D- J
7 [5 ^: B Q9 Z2 k8 E0 N5 H 4. 我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
, G5 l1 b4 T; b l. s- `( a$ T7 X/ G1 L5 h
然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。" E2 t! U! n: `/ l# ~7 f5 s( a
5. 107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。$ T g5 u y& B
2 j) }# V/ @8 ?+ r+ [ 6. 全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 / R l# ~; h! F1 F) d
) p) [* u% ^" |7 ?+ C2 n _
( j5 G7 s- |1 v9 F- i' _, H" m
& F/ F. C w c6 ]# P+ T3 r4 P$ {; l2 o3 T' o% s- j5 w- }
8 V/ e2 B$ v: U$ d- }7 ^
1 e- r8 F3 c- Q3 g. N' v/ i. k
8 \# X' V0 y& v+ u% Z4 r1 W; k, N; c; w( }9 c
& ]9 V1 Y3 x9 K# q- d' ]+ j0 i+ Y7 B 个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。
" |1 c9 x, v/ x T1 \2 Z: @* b+ e: R* A/ o3 [
操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
2 y h0 I; x( F4 c ]
8 `8 g/ |1 ^. o- z @echo off1 V$ u# i5 p3 j, e4 G7 W
if exist c:\windows\XPGina.dll (6 R6 t( s- B' z6 T
echo Windows Registry Editor Version 5.00 >> .\reg.reg
* H/ K4 P9 G* t echo . >> .\reg.reg4 e- X$ D. i& h$ e/ \
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
- F3 U- {! v( o# N, Y/ t/ P; Z6 J echo "LogonPrompt"=" 祝您工作顺心!" >> .\reg.reg# b1 \# W' {. a8 n5 X0 k
echo "Welcome"="(BY IT支持维护)" >> .\reg.reg
8 j' i: e$ Y2 S L$ I1 j" S- e) Z echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
4 y/ _: x$ @& X P: I regedit /s .\reg.reg
8 N! Q6 z9 M9 I! Y4 E; ], B del /F .\reg.reg0 |0 b' L+ W! M Z, ]
) else (
, j6 D: o. `. `/ c o9 f, T net use z: /del3 c, z4 m- b7 y- z! C# d* q3 t( ^- c! G
net use z: \\FileServer\\Share "password" /user:username@yourdomain.com
/ O7 ]0 G6 ]* _& @9 o copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
6 J3 s4 @; \3 i- k net use z: /del7 o& J1 @) G7 y/ y/ U
)
+ y, l+ V6 X9 x" O5 u" |! s! p
0 e# O! m/ Z% S7 D/ L7 L1 Q 对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
5 j# I) M s' `/ k' @! N4 _7 o! A4 j3 w+ e% W5 j' I9 L
顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
' c$ L: u* F: m i4 J
: ^5 Z; L9 {4 a# @6 E4 D( M M @echo off5 `' K# ^! }; m. ]4 _
if exist %SystemRoot%\XPGina.dll (: R. T! S+ \* E6 c
echo Windows Registry Editor Version 5.00 >> .\reg.reg
* w- d9 H- A) w# t* r echo . >> .\reg.reg/ d* C# F0 l, I9 r
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
9 E0 K. {) J7 |$ K4 E* H& ? echo "LogonPrompt"=- >> .\reg.reg8 ]9 d/ J ?" A3 d. Y: X
echo "Welcome"=- >> .\reg.reg* Y$ H( g" J1 z1 L; K L3 z
echo "GinaDLL"=- >> .\reg.reg
0 \% f8 v/ G! ]6 v+ a0 o3 P regedit /s .\reg.reg
; t8 p$ l/ c# ^7 c" V& C del /F .\reg.reg
b% H2 m: _# e3 O ) else (
& b1 V! j( V% ?) }' P del "%SystemRoot%\XPGina.dll" /F
D, |# s( Q' f+ _, p )
; w7 ] z! U( V5 X% N* C7 F; n8 h( X
最后,整个操作步骤我还想补充几点说明:) b; N! f3 G' u
8 f! X9 X! |- n' x# h
1. 操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
, z' o$ _# |2 g8 Q0 T2 s1 @- Z
' Y3 [" _" M& A2 ?) ? 2. 在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
8 j' I2 V$ d7 D2 f1 V6 o% ?4 p k* j
3. 在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。
* ^$ {8 H( ~: k5 f% H3 h/ r. @
" J L" q& m- A+ L% ?; J 4. 如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。7 O: ~6 o& p S' \: I
' j: G+ W) R3 r9 |" t, \, Y
OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。 |