出处:中国IT实验室# ~. u! s2 x0 j; p& |8 R [! g
* ]/ `3 ]4 N0 v6 _# X 个性化Windows XP客户端的登录界面 一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。$ ^! y4 o9 W) y; W6 c! b
6 d$ ?" H4 K4 H& o 先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2: \! M# ?0 ?0 f# O, j/ ~
; @/ D) n# G9 e R
是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作
9 I+ G+ A! k8 Z. Y 9 p9 V. u) R' t: g$ n
7 R. [: O. B& A9 m 1 I0 w0 e* H! _) k n
0 n4 r) Q: j* B" c6 R2 W0 C
" L" Q9 p: v- I) k; }5 m4 q( X 在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。
3 ]8 I# P$ _' m, U
9 x# X& y3 Z# S. ]( O4 k 不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。; o$ W9 u% h- |, A7 Z9 n- x
4 m/ B& y: o" Q. M
OK,下面是具体操作步骤:
0 Q- B5 [! _' X' X$ u0 w$ |' N+ U 1. 将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
: V$ R. k# ]; C2 c% \, S7 K: x/ u/ W! K6 b, E( {
2. 用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示
% v. I+ W# d! h$ i4 ~# ^
: x D: \' Z" G5 e R# `* `8 f 3. 我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。$ t n' Q& f9 Z' n1 u
* J8 R3 P' z* [0 U( e 4. 我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
/ Y% ] b5 b1 c) s" s$ B8 U) R
& k. A: X7 F% @& ^& j3 l( ]. t% Z 然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。
4 x5 ~ x7 A) A9 n! R; ?8 Z( ? 5. 107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
: i, Q6 a+ @3 P2 B. _7 | h; p7 s% v
6. 全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。
s: {! H: q) v: y" t) L$ e
0 {. ]: s2 P0 w* Z2 a2 d' B7 x ; B) d' D U7 ^- B1 {4 ^, i0 l
+ b8 r! d9 ~: J
7 i( o% h5 A4 n9 U4 A
) S) \+ \, B, b( R! }
! {0 y3 v4 y( F& D8 @
6 g* ?% v* O1 n) g; [$ ?
1 @# j) G' N5 {& ?# H* N+ G
9 Q4 U3 Z, p: c; |5 O 个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。8 B) z1 B: D* ^' o
% _& w$ n0 ~' Z3 W9 Y, L
操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
1 Z3 z) v' H! ^' p0 i0 V- N5 b& {, M' ?
@echo off$ E1 ^9 |( z# o
if exist c:\windows\XPGina.dll (
7 F" |# v6 s3 Q5 V/ |, q) w6 P# e echo Windows Registry Editor Version 5.00 >> .\reg.reg
/ x- L8 \) z" W* S# [ echo . >> .\reg.reg6 y9 G3 g1 x' l% K) S: L
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
2 i s* q' l$ f1 v; V echo "LogonPrompt"=" 祝您工作顺心!" >> .\reg.reg, Q& {% W0 L+ E8 Y# S1 x4 O
echo "Welcome"="(BY IT支持维护)" >> .\reg.reg7 z' y' t' }/ S. [
echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg( m8 y- p2 h ]! G" L
regedit /s .\reg.reg" J4 N6 }6 Z- f( V6 l
del /F .\reg.reg
( y$ G$ q: {4 J ) else (
. w1 A: j* o! F( f' S2 O* D7 W3 l net use z: /del' T) c5 f5 m; v: q
net use z: \\FileServer\\Share "password" /user:username@yourdomain.com
1 L: o# @* K! p: F copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
& m8 T) k# i- u% U$ v net use z: /del
, [! K1 s, i8 @ m; s( U6 e; r7 l )
) L7 G: o& J$ F, S8 F6 W1 A8 E
( E) b2 E. b8 N$ W- } 对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
5 M8 K+ Q+ F- W& X5 }- ^; i2 l; E* C" j3 l/ u
顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,( W" F: Y7 y/ R4 I8 j
- A" j1 Y" f2 o$ | G+ D# p
@echo off4 E( v6 J& i; o* [ X0 o, P k
if exist %SystemRoot%\XPGina.dll (4 {- I. _! S: g# X! ]/ Q/ b- Q0 O
echo Windows Registry Editor Version 5.00 >> .\reg.reg- l8 Y# u( ?8 s
echo . >> .\reg.reg9 t2 H- U6 T! k9 [5 \7 h
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
' @/ w" k# p& A; W/ t echo "LogonPrompt"=- >> .\reg.reg
) J& L& L9 F+ m$ E; { echo "Welcome"=- >> .\reg.reg. q* Z5 ]" r1 f( Q# C) _! k- z
echo "GinaDLL"=- >> .\reg.reg
I6 o3 u# F7 v* D( E6 W8 ? regedit /s .\reg.reg( Z& x$ S) F7 M, p, j
del /F .\reg.reg
8 H r, p5 W* u2 X9 z ) else (
( o( M0 s8 v; d: E1 J) z2 J del "%SystemRoot%\XPGina.dll" /F
) T0 q4 |% E6 K; i; O. _( Z7 z: E )
. u- ]6 V3 O6 I7 R8 {7 ]. P
8 p1 u% ^) Z, U2 } k/ d 最后,整个操作步骤我还想补充几点说明:) a& j) h; m$ F% c
* b" j5 N/ e( f0 y) f& v) c
1. 操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
2 A9 \1 O) m6 I5 w$ I0 v& o- A5 X4 b) l [( H4 W+ p
2. 在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
* r0 t) c2 X2 o( m7 ]* |+ A2 C. f6 [2 k' w
3. 在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。
$ v7 r+ L4 B k- B' F6 [/ {. e' V* w
4. 如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。
8 p( ]! z. Z, c9 b
. {9 Q# _7 o; k) h4 K. k8 [ OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。 |