找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室
+ J+ O( E, [3 T  U& Z% h1 \! L0 y8 K$ a4 H8 }/ c9 C: t6 l
       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。
5 N6 a4 l. ]7 Y9 i% @8 |% J# W; `0 y
* R- i3 L+ y7 y2 O  [. q       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2; I0 S; k( T0 B( z
, T! z6 A# R$ `/ D
       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作3 ?; y; ^; L% B. X4 X
    1 ~9 m6 h6 A* Q( l
% W- f$ E( l7 j- V! E# ?

( p' {* e  A8 n: m1 ~
) u8 u' h, ?+ k; o0 b

/ u% g$ X9 L: s* Y) `       在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。  @& G. |. c. E9 o

/ P( N2 o( q# y" R       不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。, S4 M  g) E& _* z% |0 \# E0 ~

$ Z! m6 M1 ^! H       OK,下面是具体操作步骤:8 o# w# e  M, B4 M2 i3 t
       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
, L  e" w: k  B1 r" ^4 B, W( ?( }, E5 C, F" K- _; R  K# R
       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示
" K; k, ^& y$ m9 J5 q3 l8 y8 I( x0 k1 U" K
       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。$ q) @: P: s$ [% ~

+ ^& E7 ]: d$ |( ]7 |4 R$ T# v       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4." e4 x7 w+ {6 c; Z# h/ f( P5 @

: ?3 A! e1 h+ \$ `" ?7 M3 r) s              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。" @6 B) g# D" S% |" s2 J
       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
9 r/ J/ j6 n$ H7 e: N
. X/ g7 ~! I( u9 S  P7 c       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。
" n% ?( g2 C# I1 ]) G   
1 _# N- w# ^" v( s3 Z! x

* v3 U/ S7 E4 N3 T8 i
6 |) \+ n0 K6 L. @+ K5 f

( @4 g+ A' {9 A8 s
/ B: p2 m5 \' M6 o! a- i
' P2 a5 v4 V2 ]# j
  
( v2 Z! x! P# E, y

1 |' ]0 y& C! ]/ k' F- d/ Z: o
" f2 ~0 k( f6 P+ p0 u       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。
, Z6 V+ c/ }% N0 M! D0 [+ s8 {1 L1 {% @7 \& r7 C
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:' ^- j* h. Z6 r

5 `/ \; s) P! O/ K    @echo off
/ d8 i" V9 [7 M3 Z    if exist c:\windows\XPGina.dll (
& X7 B( D: I* I$ w    echo Windows Registry Editor Version 5.00 >> .\reg.reg
) D4 c( H. P, h7 w' l8 Q    echo . >> .\reg.reg
7 W4 }0 U! j3 ~5 i$ M. l    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
' }- l$ M& E' V* Z+ x9 ?2 }- i8 |    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg
3 W; T# q. K' `& A$ H; d5 _, @    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg
2 U& I! P; ~' U* b* m4 h- C& Z    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
. e! {: W* W% u    regedit /s .\reg.reg
; u% r# h& M) D    del /F .\reg.reg
5 V- e  J4 y+ c* b/ p4 N& L    ) else (
) |% q7 p/ f6 m! ?% e9 z, C1 b    net use z: /del; N3 V+ }6 l7 m5 i1 Z$ ^; j
    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com
( ~" l+ R& Y# a7 K( j    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n3 R2 a$ [0 C; Q
    net use z: /del2 M5 N. q7 Y: I
    ), ~4 N6 E  ~9 I* U- |5 e
" F" j  H' X1 [' c: v( ^' A
       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
& [+ T! C' V# G  `; {6 M8 w' n. c& f; |# i& n
       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
! w4 T" M9 j7 w* b8 F0 D8 V
0 y0 o$ \8 Q3 B1 a    @echo off2 }7 F0 k1 E& y6 k
    if exist %SystemRoot%\XPGina.dll (
& t( A3 _; O: Y8 a9 y: `( N. d    echo Windows Registry Editor Version 5.00 >> .\reg.reg/ v4 D4 x5 J$ k  w
    echo . >> .\reg.reg( R7 S0 d/ }6 f; |5 I% h& M
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
8 X5 Q9 p8 w; G2 U    echo "LogonPrompt"=- >> .\reg.reg: v0 {7 P, e, }! X7 V9 G# w
    echo "Welcome"=- >> .\reg.reg' p) u: J  ?  U
    echo "GinaDLL"=- >> .\reg.reg
7 J8 x: C( L7 Z6 q0 b7 ^    regedit /s .\reg.reg, `1 P# |, ^( B
    del /F .\reg.reg
+ e, n# [3 o5 M( Y% u: t    ) else (
: ]- N" g2 j* B  [+ I0 |$ G    del "%SystemRoot%\XPGina.dll" /F
+ [  K: i6 N/ {* `    )
0 p$ o+ _; y7 M: X# f' h3 M/ v7 ^8 k* M& v/ v& Y, e. l
       最后,整个操作步骤我还想补充几点说明:
9 J0 X  d8 ^4 g- M
$ t4 ]5 Y1 Q( H1 s6 C- x       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。, W) t. @# {) w; c

, E0 O2 N9 o0 o% e7 n$ z       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
( B2 |( B# c8 G3 ~/ t& C, A( T, S- D6 W- k
       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。6 o/ h' Q) B0 c  f& L$ N. i- {
1 v! t% R$ e8 }! j0 K
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。
; c5 {' M( P- [. {) o! D. t2 ^# W$ ~1 b
       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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