找回密码
 注册

QQ登录

只需一步,快速开始

打造自己的XP客户端的登录界面

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室
4 Q1 N  p4 d! X
# S5 X% ?3 _  W& s       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。
: _! j3 O) ^+ `+ |/ I; a& q. G6 J7 b& z  a+ H, h) P8 Y
       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2
% D- j( Y2 N) F1 N! _
% c1 B0 ~$ ~% S       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作/ E, H  u# |" n, r9 \5 a
   
5 Y: a* z' h2 j7 C
4 P- M; V# k' z' ^2 Y! z5 W
0 o( H; u$ l6 h  M! E; J7 F6 i
8 B! c/ h! N, @/ t$ X" d; S

7 ^( i' L& A  v0 ]       在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。
/ T- i$ V! |* B+ i
2 T- D9 f1 N* V2 x+ T4 C  C2 L       不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。1 t- q; e; V9 Q6 s- J: u

. a1 s$ F# Z! s& e" J       OK,下面是具体操作步骤:
  Q8 R- E& c& U2 P( C$ R& t; D       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)& n- u+ B! W, u. M: ?& F  j5 j: D

3 N+ \9 N! }. C( k* O+ @       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示0 d, ~8 l5 H7 D8 \

0 R. V. v& h6 I! ], ~/ b       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。
! A. X8 z6 S( f1 H- |" }0 b+ W! V
3 O( a# N) G/ I7 t       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
* N! K0 u- T* V. S* y
; ?# Y. b6 A4 P  _9 U) ]              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。
# r3 `1 \+ W3 a       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
3 `0 i7 M# {/ F. b, I' t4 @/ B$ P% o8 s$ d% S& r! b
       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。
- f- `$ V1 z: f8 ~7 u   
+ P7 _! S8 O% o, d( K
6 S! z0 y% d3 o1 H' R$ S
. b3 m( Z# f' N% w; T0 r
* n6 c1 V9 l  g+ O

$ [/ ]0 A9 o; N: ?9 ^) z
' R9 _" T) @$ r3 A. f
  # `! m8 U; Q9 o% e! p  |, k# p
# r: X8 O6 l3 Q( W: f/ Q0 u, N5 V0 W
$ s: B, B" p: h" u. P# D
       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。
! @8 |, b8 j/ c/ c# k) x" \. \" `6 I  O
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:6 v. w( Y2 p: E; e, w5 w
* A1 n! Y$ S' S6 d/ K9 F
    @echo off
  Z1 |$ S* [- ?    if exist c:\windows\XPGina.dll (
  P9 m9 r! l3 x4 u, B) V6 C7 c    echo Windows Registry Editor Version 5.00 >> .\reg.reg
1 t% f7 Z' f9 r5 `6 T0 O) @' ]    echo . >> .\reg.reg0 J2 U, W: r% H# a
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
) }: |0 |0 a& I2 t6 l    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg! |5 u, f0 M/ B& b
    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg+ J" ~% X6 Z9 z
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
5 a# a4 `0 h7 c, F. W* C    regedit /s .\reg.reg
+ b4 c1 s( N9 L: p; M% ?; y    del /F .\reg.reg  F6 f: Y* \/ Y; C! B5 o  e
    ) else (
3 f9 L/ g" G5 `1 [    net use z: /del7 Y' }8 P( p, Y# |6 x" a$ E8 A2 `
    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com
% s. s+ G% V' |0 A    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
2 G' S0 {) e9 p& A7 s    net use z: /del3 ~* A2 p' m; t* z: q) \
    )
1 U7 h) M$ V2 F4 c1 W1 H
$ h% G5 x5 I# F       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。* I1 V, J  \2 L
9 C3 Q: S+ a- i6 C. v5 s. y
       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
$ D& _' y! R4 |" f: |/ W- E& x4 n/ e- g' x5 x) l' J: r
    @echo off
) _8 K# g  l% t9 T+ j0 d    if exist %SystemRoot%\XPGina.dll (
! W. [: P+ C, ~, B& t    echo Windows Registry Editor Version 5.00 >> .\reg.reg
, P, e  S% h- U: r    echo . >> .\reg.reg$ q: O3 \# q6 i* z, ?* b- y3 A  h/ L
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
* G2 v% v* v7 W    echo "LogonPrompt"=- >> .\reg.reg
% K: N* i' _. W1 `( G* z& }2 Q( A    echo "Welcome"=- >> .\reg.reg
2 l3 L4 ^: {0 Z% A, c3 H) {    echo "GinaDLL"=- >> .\reg.reg
7 E1 Z$ T+ @+ ?- Z! y' Z9 w2 N8 {    regedit /s .\reg.reg
! {* V5 @. w' H* u$ Q8 ?5 f    del /F .\reg.reg
- e7 e" ^+ h1 A' O4 I  K    ) else (: j5 \. j. y) e3 H
    del "%SystemRoot%\XPGina.dll" /F$ [$ ~" g) o- \, H) ~2 _
    ): W6 r0 K/ Z1 T& Q: e- ~: b/ i
) P- e+ R6 o) K: m' S' }% d
       最后,整个操作步骤我还想补充几点说明:& {. ?1 M# \4 q2 x' X; N

8 ~: P8 u8 C7 z       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
& O+ n. c5 f" K" j/ E$ G8 {: R, I# |
       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。; g, K! s5 Q4 F7 t  u4 M9 `
# L3 A, \- O! A; n, w' x, u8 w
       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。/ o' \" O) P" P. Z! i: O0 |
5 t; y! W6 o# H
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。
. V3 L/ V& Z$ g+ _. u
$ S% T4 W0 a9 i" ^% L       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|本地广告联系: QQ:905790666 TEL:13176190456|Archiver|手机版|小黑屋|汶上信息港 ( 鲁ICP备19052200号-1 )

GMT+8, 2026-6-14 22:18

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表