找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室
% a4 ^+ t' T" G# b
. D% _2 v6 U7 r% g6 A1 J       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。0 u7 a' Z/ i. b8 Y8 P' c8 P+ P8 p/ u
, ^! P2 S& ?- I, N2 s# ]
       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2
; o! l$ ^: |- x( [; S% Y, u
7 g+ p& A% P; y1 S/ h2 W, H       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作5 T8 Q* |5 e, t$ d- {
   
, U1 X5 ?8 H9 j; I: \1 z9 n: t, z
+ h3 y& W* U6 a: \9 _  E5 s/ j
; Y- M1 N% T6 V

# g5 i( F% M! s% d$ I0 S! o* u0 T% a2 B7 r
       在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。, M* [8 g# d4 h/ B
$ d9 }" x; G* z. C4 N+ z0 D2 o
       不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。4 c. b. z0 R# e
! H( Z* _: \/ ?  W" t7 ~
       OK,下面是具体操作步骤:; R0 o$ u. B8 ^; ~$ r
       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
1 \* {) G: A2 b  j; e/ s, C5 h7 A$ Z+ S) Y( Y8 n5 \
       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示# c4 D5 B! W0 j, ^! Z
" R: b& I/ \+ C& M4 N- u& N- f
       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。
' G6 d, y) {2 R4 ]1 C$ v
4 t* W- G) z! ?       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
) _9 Q- L  F0 T
1 g( W, p5 u7 G- ]              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。( k8 [+ u" q( \! A& Q( M% s2 \- P1 t0 h
       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
' V0 ]$ W/ j' J, A0 a/ [% T" x7 b7 H& t. ~5 c! G. g
       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 * N7 ?) e4 n! }6 M  K. Q" p2 @
   1 S" O/ E8 W% ~- m/ }0 [+ V/ \
' g" |* ?$ j) b5 C+ G% B1 m
1 _: R- ]% ?3 V4 L: u8 ~
) `) v7 V$ T3 D. `# E3 \

( P+ P, E; P' ~! s. D, }" \

3 O9 B/ [6 K; t+ o/ C: A  
5 D; m$ }8 v6 W
. i7 r1 L) L" m- o
" [/ z8 i7 g& H* b8 ]
       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。- N9 F% C; \1 @5 x& D

2 L& j% r3 ~, I( X8 v3 l: U       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
1 L( n) L# |6 n5 `# Y$ ~3 g; _. J( l8 \( i* E
    @echo off2 G: s% H( @' N5 h  V
    if exist c:\windows\XPGina.dll (
$ I% t; w6 s( h: O/ m1 o    echo Windows Registry Editor Version 5.00 >> .\reg.reg+ K& g5 l" l# Q( Z8 ]7 z" H( p
    echo . >> .\reg.reg! ^4 c( h/ \1 ~6 V
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
! c3 V% ^7 `/ f) E) f    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg, H/ b1 u& Z' `
    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg3 k8 r' F/ x. m: z; f& W: L
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
+ T, E/ n7 v7 D, [7 _  U2 \    regedit /s .\reg.reg' w/ Z1 \2 Y9 E# j5 z( i9 y
    del /F .\reg.reg; a: ?  n# r. y2 b- c
    ) else (
7 t! W; e, r  p) @    net use z: /del
$ D& Q5 Z: a4 f. c  ?$ Y    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com
9 [7 x3 n! P( x( P$ [) Z    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
! T  p* n- W7 m    net use z: /del
* q2 f/ A' r4 O) S* g) O( t1 o    )4 E- X( t  R& T1 u% ?' `5 y5 J. e

4 H* l" p' U/ M- F" W( b$ K       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
* y& w' L) M: x& d: @
6 y. i/ g$ u$ T) v1 U/ @       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,- w; F+ ^: I; L$ j9 X  H, q

, K1 {! m5 O/ N: l$ \    @echo off, M  @$ ^" |$ V6 K7 g
    if exist %SystemRoot%\XPGina.dll (
  X- [' R* I- R+ Y" {8 f    echo Windows Registry Editor Version 5.00 >> .\reg.reg
9 l: `8 ~7 M" F$ F# z; A    echo . >> .\reg.reg
0 V" f$ T% u2 p3 y8 x    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg/ {6 ?' I% Z) x- t
    echo "LogonPrompt"=- >> .\reg.reg
/ k  W3 N' u- N' k5 E3 C( l    echo "Welcome"=- >> .\reg.reg
& I$ B. o8 I/ L, p5 H: u# w: f    echo "GinaDLL"=- >> .\reg.reg
, B1 r4 K; j* j! f    regedit /s .\reg.reg' C3 f0 Q7 `- ^& e$ R
    del /F .\reg.reg
$ S  w+ ~( g  s- N* c0 `* y    ) else (3 G+ k& m5 L) O- C
    del "%SystemRoot%\XPGina.dll" /F
3 ]0 \( ?1 f2 u* t2 E  Y    )5 L) S% f5 q2 ], e
3 N/ W% o7 j9 @% E5 b3 s
       最后,整个操作步骤我还想补充几点说明:4 L7 ^$ a: o- u- `, g
. Q- \2 L3 J% p6 f) ]2 O
       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。( b! A, v+ t; C; Y) i3 Y& P5 |' q1 d
" `* S; K% [+ U2 y* A
       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
5 k* \1 ^# Y: X. A* C8 _% x" ^/ D
       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。
! W$ [: v9 r1 x3 F: ]4 G! w- R6 Q
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。( E9 G" e& v) z7 w& x7 ^4 _
- U4 K8 L) Z$ }5 i# C3 _
       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 19:47

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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