找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室, g- ^$ D' M5 \( _" j3 @# w

- s7 h( u3 a; c8 M       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。
( n: z; r% {0 r0 G4 s' Q. O6 s0 j* N0 T" o" }9 L: V' I
       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 29 D3 e5 O: b9 i1 k6 ?$ ?
7 J9 k0 w% H* k$ D
       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作
+ J- p$ C/ I$ Z9 P1 T$ ~    1 z5 e3 n: p  Q4 W7 |+ z: }
1 c  M) M  r7 h% q1 E
7 l" c' O5 {4 R9 F0 |
( ^2 o) l3 y$ d% s/ S1 u. X) s
3 R. H9 m$ A6 _, b6 t" x
       在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。
- X8 a: v) L6 w1 b# c" a+ r! o; P& h% O$ `# U& e9 g2 ^6 y$ b0 F
       不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。
* e9 l% {- n7 b6 z% T( O& |& Y2 h% T$ T' [+ V5 o
       OK,下面是具体操作步骤:
7 O2 p) D+ ]* }2 |/ e  n, I7 {       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
- B0 ?8 Y/ G, g/ B" W& K
  U+ }( t& ?2 [6 r7 [       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示
' _$ c9 r! \8 W1 _; H$ ]8 G+ P, [, \/ z5 C9 H
       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。
: X+ `1 b( r3 H% n) o+ {
. e7 `5 K8 ]# K7 \" S' X       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
- X) w  N( M4 n  f8 u
4 P5 ^, X" A5 ^0 {. F              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。
$ k2 J1 K# Q( H+ [# T' x       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
& n+ A" A' l' Z3 Z* K5 S% ?, y& E$ _' U
       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。
3 X6 f+ J6 A, p+ P$ j   & Y2 \' I3 E( A; I3 U: _9 o

0 X0 H* E* m! S1 }: I8 T2 F' S  Q* e0 P2 I$ H7 Z- I% w6 I) Y

" J! H6 j) e% q8 K* X
# {+ l* J; _! U

: h; A7 Y) R2 @1 F$ V( _1 j. P  
7 V7 O+ @/ d" m
! I" ]5 S- S# ^' K

8 `- X, G1 [* R       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。& Y. L" W& r) c8 o: F) o, G1 ]
" p$ d% z- j, |
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
$ u  h  f+ ~, W( u9 n0 @( O( `; b- o6 w) v
    @echo off3 W6 |- w  r$ r- r5 V0 J! ^
    if exist c:\windows\XPGina.dll (" [/ Q# ~* j8 `1 T: t$ ^
    echo Windows Registry Editor Version 5.00 >> .\reg.reg
+ |7 y! X8 {% r/ l! d% C    echo . >> .\reg.reg) k5 b! v2 T  u! d
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
  J& m, |$ K7 f/ Q. l5 r    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg
' k1 x5 C/ O. o! k0 l7 z" @    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg9 Z  ^! ]4 p7 j' C
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
, W5 B2 k  ~; A: i$ y. |    regedit /s .\reg.reg( j7 v9 z0 J) c. u$ b
    del /F .\reg.reg/ }" {3 z' ]' }! v2 Z
    ) else (
: Q8 w$ |, t. L4 v0 B4 L+ Y6 m    net use z: /del
1 t8 B2 k6 ]6 r4 u7 j    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com- N, j4 u. j+ g' I7 b" J2 ?9 i
    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n7 }1 |9 K6 Q& Y) l) _3 e* E6 X
    net use z: /del
; i+ l8 N. ]$ R2 N4 y( @* `. N    )# P" N% Z: y" t1 ?6 X% t, d

/ D, a& G' z0 r1 i       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。2 C. `! ]" Y9 @, f
3 t9 z3 R. D% `9 M# I
       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,- O' f  U( Q' L4 i: _

* \( N! ]8 p) D. H4 l% k    @echo off
) N2 x+ ^9 _/ E2 c' [    if exist %SystemRoot%\XPGina.dll (( q7 p, F% u. g& S2 u+ @, y
    echo Windows Registry Editor Version 5.00 >> .\reg.reg1 g7 w+ t/ [1 @) m% p
    echo . >> .\reg.reg
- y+ X% F9 V, x1 T: L9 v9 Q; D    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg% f+ ^5 ]% S' ~
    echo "LogonPrompt"=- >> .\reg.reg* @$ N  h) v0 |2 }) M+ p
    echo "Welcome"=- >> .\reg.reg
) ^' A5 D5 O% ~* l    echo "GinaDLL"=- >> .\reg.reg# u0 H" _1 B4 W& ?2 p% Y7 h' y
    regedit /s .\reg.reg6 z9 h0 u/ x1 R) }) C' M4 G: E
    del /F .\reg.reg% u. W# M' T! d& K
    ) else (
( s  m- Z4 X0 T  e    del "%SystemRoot%\XPGina.dll" /F5 j  O5 M, b6 W2 [
    )
7 T' X& _2 P7 }5 i) U" g8 x' w7 ^7 v: f
       最后,整个操作步骤我还想补充几点说明:+ o1 c% c' U5 A! b
1 c" B+ f; p  H; I& ?: k
       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。- X; t8 J( ?0 Z3 l/ X. @' ~$ h. @& g
7 t9 P: b# u/ m  w5 R. {; \
       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。$ U* Z- j+ f6 S+ H. }

2 K1 e9 K, o" B3 M* n9 L       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。" U# s, g/ N( \: L- r& M7 E4 |: N

2 d, i/ e% M/ g3 b6 j, T       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。0 R" A: C* E& L" L# a- a+ y

; J# p$ Z# Z) H; m' W% ~0 k       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-26 07:41

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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