找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室
; |2 n7 d, I/ T! w* I8 y+ m, N1 j; q  e' a# p5 A1 `
       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。5 d2 i8 X9 `! |' F

) G$ B& n) ]% y       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2* K/ W# p2 N/ s) F: g5 L
$ r. D0 M, O0 ]  W/ C
       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作+ M+ h! H. g0 A
   
# X% x, l* {% U: g3 }, T
& k2 h' J. b2 f% u2 z8 s0 I: ^" K; B

( s# H/ \& t8 w' G) K
- A$ N+ N) y$ }6 s( k0 C* [

' U2 H' Q- O- f1 x; m9 N: h3 ]       在正式操作之前,我想先和大家介绍一下Gina这个东西。为什么要介绍这个呢?因为我们今天做的个性化设置就是修改Gina来实现的。它是干什么用的呢?一言以蔽之,它是专门用来进行登录进程的验证和身份验证的。从它的英文全称Graphical Identification and Authentication(图形标识和身份验证)就可以看出它的用途。Gina的功能实现是依靠C:\WINDOWS\system32\msgina.dll这个动态链接文件来实现的。这个文件包含了默认的Windows登录界面。可以自己开发GINA DLL,以实现其他的身份验证方法,例如某些磁卡、智能卡验证、动态令牌验证等。我们今天就准备修改这个文件的内容来达到个性化的目的。不过这个文件是受保护的系统文件,想要彻底修改替换它也不怎么容易。需要借助故障恢复控制台、PE系统或者类似NTFSDOS的工具来实现,比较麻烦,而且极有可能影响系统的稳定。这种做法不值得推荐给大家。: Y3 M# e* {2 K% n% l
' a5 R, x- `' \: Z6 ]$ R4 `
       不过微软还算厚道,在注册表里留了一个位置用于安装GINA,在HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon下设置GINADLL为你指定的GINA DLL,(注意:GINADLL这个值缺省没有,需要新建)如果设置了这个值,系统会先调用该GINA,而不会调用缺省的msGINA.dll。
( P: o* e8 t2 ?
: h3 T) C+ f: b1 ^       OK,下面是具体操作步骤:
! G2 f- Y# }" x  }/ g       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
1 p% j7 n0 y* T9 k, X0 B: W
$ ]4 p7 C9 {) k7 Q% F7 Y; h       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示5 T" o/ ~! J$ \- j) a% m) T
# o+ ~/ x) r: Y
       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。4 Z, S* @1 g/ F3 D, T+ E
8 ^: s+ g- W' k# [2 d$ J4 u9 s
       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
6 y7 K- s$ J" O7 B4 g
2 o! y) \5 Y3 I! v# g2 k: G3 `              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。  M! |, B2 _( @; j2 b" P  ]
       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。
! _! o) ]7 _# M; {
) x7 z& ?8 P; d7 U( d; i       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 ! q0 \$ R- e% p9 K
   
- U) A% B, H; ^+ z
* ^- e: U9 R$ I
/ b; ?" I5 p3 ?- p$ C' E
( E. X- }/ G4 J* M" B) u
, p3 M' t* n$ P, @/ B3 S1 t  j- x* C
+ }, {! @, \- u- g1 M
  
% d0 ?5 f3 W& [" `' y/ m

5 L, e6 {+ I7 I2 I
9 X5 a) l8 }; W; P: f0 o       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。: l* Z) z( K: y6 |' e, c
7 ]0 f, d8 ~4 p( h5 b5 _' `* q8 c
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:5 l. W! ?. R' n; _
. u4 l$ j% w& t* ~- @( g, {
    @echo off$ p! C* R2 u6 a0 v  r
    if exist c:\windows\XPGina.dll (1 s3 I* A( \8 f: ~
    echo Windows Registry Editor Version 5.00 >> .\reg.reg8 V, }/ H0 V4 U* m- ?8 g8 r  \
    echo . >> .\reg.reg1 |- j, a3 l! V  q( G
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
% g& m4 [& q7 ]# \    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg( i: p4 L  P' K7 O- w# D
    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg  l, N; ?1 e' ?" S7 Y
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
, _1 U3 Q# k0 b, y' Y0 p$ a5 K4 H4 c    regedit /s .\reg.reg! G: F# ?: X9 H* @
    del /F .\reg.reg
: M4 L& q: k) _$ i    ) else (
' }, [) G# |4 z6 S2 U    net use z: /del0 C3 G% c" j1 B, i9 e6 k% q1 B9 w  X  S  v
    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com
$ R8 n  X( x6 Y* E: z* d    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n+ C0 d2 P1 O( L- ?
    net use z: /del; j- R- X8 T0 {+ e
    )  c" K+ c( t9 ~7 _6 R
- w9 G7 m# W. E) {4 _2 M
       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。
4 i( d; U# y( |8 c5 a5 Z& f' e& c4 N4 r: z& z
       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,6 F8 G# \$ ^2 N: ^8 @' i
$ E+ ^. `  }) t1 ^
    @echo off  C/ [, c( x: ~. N7 w
    if exist %SystemRoot%\XPGina.dll (9 m" G" r. _; V8 a- z/ v
    echo Windows Registry Editor Version 5.00 >> .\reg.reg
0 X6 ?" b5 U% X$ J0 v' ^) }; F# u' h    echo . >> .\reg.reg% k% G% ?5 \* v6 Z0 D* m4 d/ y8 p
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
0 g% v/ f" h( U- \    echo "LogonPrompt"=- >> .\reg.reg8 f5 E- |5 E8 h, h8 |  L9 O) M' `
    echo "Welcome"=- >> .\reg.reg
& \% T7 H- M- r' _- e" P    echo "GinaDLL"=- >> .\reg.reg
$ H5 v# I8 t# e! J- Z& h    regedit /s .\reg.reg
8 B# N0 j; E; E- D5 t8 d3 H- I; r    del /F .\reg.reg" P  L8 \( f% z* F* q+ ?
    ) else (1 n! e* P: j% r8 Y
    del "%SystemRoot%\XPGina.dll" /F, a0 F2 I9 @' z6 S5 `7 t- i
    )9 g6 |2 S1 _, }6 U2 [2 H

) p3 }  a  j. x  N) a  F' a& X       最后,整个操作步骤我还想补充几点说明:
0 E' v9 v3 M' F0 o9 W, w) H
2 Z+ w: V# ~: n! M4 a* H       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。  c) E) _( A2 \

* H& T$ _8 A1 Y- j8 T       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
" B/ z5 z7 n+ l2 N9 s1 M$ D
- U* Y# I7 {# F2 F9 R1 i6 n  j       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。: [! p! }6 n9 R+ s+ \+ y) E

! E% \" @' R" [  D9 P       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。) v3 o8 y0 `0 L1 u

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

本版积分规则

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

GMT+8, 2025-11-1 12:24

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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