出处:中国IT实验室9 Y8 L: O, G8 s: f* I
8 q7 z, l9 N( |$ a2 e 个性化Windows XP客户端的登录界面 一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。! J9 ^+ {6 q9 L! ?" S/ T
1 }! e1 J6 r4 k& j# r
先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2
7 E2 h5 e: l- @" w' X! R
i: j% p- q( I6 d 是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作
1 I* d7 H# z% {5 N7 {
d' r8 y+ v# Q% I- B
4 R h9 k2 Y0 G
. \5 y. T# N% W( V8 R- W 4 m6 y4 K& V; H
# {+ M. O) `# g# q 在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。; N2 ^6 x) E0 D$ T9 e$ U
' l( o2 a) {" I3 j* ?/ A" s
不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。# R) u. l; D: z3 }
% z6 \2 u2 t6 t& [1 c% a1 @
OK,下面是具体操作步骤:' z# `) x( n6 {3 q) K. _
1. 将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)1 Z$ C5 ~' t$ O3 }
; i) U8 g* m! r' | 2. 用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示, E- x5 C# C8 d+ ^% m
; { y9 }# k# | O$ L; y
3. 我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。" Q, P. m; B/ u0 V( K# n: t
1 s& a% @1 p9 I; g) q 4. 我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
8 w& O3 j- u6 R+ r5 I" @- s6 e! p* S
然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。 v! g6 C9 T4 f2 P; G
5. 107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。' l, n( G# ^- v. C7 j- q
* I: h% h& Q/ J2 ?/ a. Y
6. 全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 , H& t. @' R; b# A7 W
/ D2 M7 R3 G1 r4 I- t4 z , t. n6 ^! d) E) u/ ^$ s
8 S0 B5 P$ M: S$ t
, h9 H# \( A0 L1 v+ z- H
6 g9 g9 ]7 |7 k# P; f4 n
2 U' V5 |7 l: Q6 [; X
! r! g3 A2 F3 V+ t, V9 _6 P' _. [& L, F
8 F0 z& \6 w, _; I
个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。
1 Z. ^3 Y% h+ w! |; v$ W, S) K' E
- T9 d, S5 _+ a- @ 操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:: v' n# p& Z2 Q7 Z( I8 E: D8 H3 h! R
% t4 f( Z- f! ]& N. ]! U2 z# U2 k
@echo off
1 Y8 p- b/ o2 I3 a0 H if exist c:\windows\XPGina.dll (0 E; o2 f$ s$ b1 c3 E& v
echo Windows Registry Editor Version 5.00 >> .\reg.reg
4 {- f3 T# [' l" g6 c% S6 q echo . >> .\reg.reg7 }' D; c+ q$ Z* \$ u0 c0 X
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg9 Q5 U) a) N3 z- s3 d9 X
echo "LogonPrompt"=" 祝您工作顺心!" >> .\reg.reg$ [& I$ r- F$ b2 P
echo "Welcome"="(BY IT支持维护)" >> .\reg.reg, s6 s! a% A& F
echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
8 ?, |+ h9 g5 N2 J3 H regedit /s .\reg.reg$ |8 a' \: w/ w
del /F .\reg.reg
/ `' j9 x/ u8 Y+ G! ^+ l7 R3 } ) else (
4 n% S( Q( E0 n8 O+ f net use z: /del
9 Q D3 o5 x3 n/ q2 W) N net use z: \\FileServer\\Share "password" /user:username@yourdomain.com
- i. [0 e) K; I K! \2 C/ u copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n" H1 }6 j8 w/ X* R* X7 b* C$ E
net use z: /del
! v' b# k; y) A$ |. G) r )
r- a! b: [8 \: E- S: |2 l4 W& q7 {' ~
对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。5 w- I! V! M5 z( G; n! X
- n" n: c9 f( P. o2 x" u, y 顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,% U7 t3 N V1 Z. s& \2 I2 e
7 C& e: R; Q1 @& A# n" m" Y @echo off
* `5 k* ?: o h8 ` if exist %SystemRoot%\XPGina.dll (. v# j m! D" \- ]. Z+ m
echo Windows Registry Editor Version 5.00 >> .\reg.reg4 z# v' N, Y* ]4 _0 a& E; \
echo . >> .\reg.reg
, F1 W4 a( W" l# D* U! ^ echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg9 _" x, N! t4 u( B
echo "LogonPrompt"=- >> .\reg.reg" |; Z/ L; J1 }$ I; `# z
echo "Welcome"=- >> .\reg.reg0 z4 }/ j/ h( m4 o% h% K
echo "GinaDLL"=- >> .\reg.reg
3 d" B+ l. x" e) x regedit /s .\reg.reg% S1 Z) B/ A+ J1 ]! [) t. ~" p
del /F .\reg.reg
- Q: r( ~4 Z! q1 n+ V' z x1 e/ w ) else (( N6 N; A6 E* }4 w6 F7 V' z. u2 I
del "%SystemRoot%\XPGina.dll" /F
`+ o& z. k& e* X )0 }9 q( _2 A, e, K* R6 e
+ {: N3 W" w! I 最后,整个操作步骤我还想补充几点说明:) d) p" r- s! Z2 Q; {0 h
* S5 ~; H0 w; P+ S# |
1. 操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
, p$ N% J8 V1 L* Z3 p8 W
3 B4 u/ B2 H2 i+ c. _' j 2. 在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。- F+ g& X& @2 n4 b
: t3 v: f; ]. y5 ` 3. 在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。
2 N" _& i5 p- R; g- N. S% O! ?1 ~1 }1 a( l
4. 如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。
$ A6 _5 a: G+ \( G5 u3 J7 Z/ x+ M7 e) p% `( F9 u4 X+ U4 z
OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。 |