找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室
& _% d5 B  J- {; o  J6 j- Z; f! b- P/ T! c: R  o
       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。
2 `. t, f3 K9 N0 E2 N! C
. g2 |8 s+ b7 e' Q$ m! s  B/ G       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2# Y- O" U6 w, E! Z! I) @

1 {& C! L' }7 E5 a% p       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作  H7 y9 F% E4 E8 R
   
3 W2 a& K9 X% p8 A% J
) I! K' E4 x) {& V

$ w4 |$ J8 q) f$ i
0 _7 x& @) }* q4 T0 v$ }5 K

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

2 S# g" U" K! V$ {- Y5 r; s" @$ F       OK,下面是具体操作步骤:
4 ^9 d. N; P4 K) E/ T  O5 f- Z9 B       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
6 D5 H% t7 x6 F* }8 @
/ Q0 p; T1 R5 h0 O       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示5 `1 i. \4 L% L. e: \3 [$ U0 |
/ B9 m6 K9 C9 m* @6 ]) A) u+ ?
       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。
8 `9 P7 Q* y( {* b2 i
1 r) o5 U( y/ o       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.
  C' q0 y; G. K, ?6 u9 T! P2 g: M: _! ^9 A1 Q
              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。: B; B" q& N9 X8 L
       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。7 Q* v, J  S; `3 j) S0 J+ ]
6 p9 i" S2 R! x+ |
       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 7 ~5 n. ~  |! ?( q- V$ i* l  E' F
   
1 T' @. h* B! b; C( |/ ?/ O

4 ~) k0 D, ~7 O: f$ o& y9 w
* d! D  v3 N  \( u. T

9 h6 {$ \: s: J8 S6 O' l+ d
. H: q+ D' s9 @* q& H

2 N( q6 a3 R/ w# u  ( f0 J! [# p3 p
" i" D9 v  F) R, o3 T

5 i- ^: v6 t7 D       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。8 V) ?; y( k9 ]
$ m9 ~8 K% L& J! |; C. a1 A
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
4 O- D2 N: q) R" G
2 h6 k  z$ h1 x, u    @echo off
% d, L0 A$ p3 i, u, h+ `    if exist c:\windows\XPGina.dll (( R( c7 @- g5 d' @1 K4 n
    echo Windows Registry Editor Version 5.00 >> .\reg.reg% H2 v" w& J0 I# L5 y- c
    echo . >> .\reg.reg
$ M! y) [: a$ T; [/ v) x    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
/ \. @( r$ K: X& U) l" C    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg
, ?: s* z- I$ D5 w    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg* X9 S! F  X  k% i
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
* Y" a/ X  Y! q* V* K- m( B1 e( k: p    regedit /s .\reg.reg
* R( u. q* j$ q* Y" j8 H: w    del /F .\reg.reg
+ y8 \  m" H1 t6 j# {    ) else (8 C0 u" k- O& h* e. b4 S8 N# Q/ U: g
    net use z: /del, k1 _  ?( N, e, o. i
    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com4 B. V+ k9 A/ ^# }& g/ z: y
    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
. H% u$ Q$ C/ n) a8 u" Z5 t    net use z: /del& w7 |  c8 {# E) |. k9 J0 z
    )/ J, W: u; h; g* D

; n# }: P" \! M$ Z$ S+ I       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。% V; F( L+ S& ^% C2 j9 U! [1 w0 d3 j6 R

. w3 U6 u+ g; b       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
) p/ ~# H0 Y; Z; U) ~# B! }( Z7 w% W5 @9 G( B3 R
    @echo off" h) c# ?! R/ b7 M, Q7 ]5 d2 |% P
    if exist %SystemRoot%\XPGina.dll (8 E) J' g; k4 ^' ~( p8 v. i% z& x
    echo Windows Registry Editor Version 5.00 >> .\reg.reg
" B* A: `  d8 S8 f3 G% \% I5 V    echo . >> .\reg.reg5 O5 M$ |' l0 Q4 ^2 {
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
4 l0 [/ L  n, ~% x    echo "LogonPrompt"=- >> .\reg.reg5 X) Y2 I! O" ^  P
    echo "Welcome"=- >> .\reg.reg
$ _9 O* v- l5 r$ p    echo "GinaDLL"=- >> .\reg.reg
  y0 i' ?7 g$ ]) d    regedit /s .\reg.reg; Q, X0 U! A9 r$ ]6 ~
    del /F .\reg.reg# h; \! o& ~9 ^* b: ~6 r* _2 r
    ) else (
7 t7 K# I6 L6 s; v8 d8 j2 f    del "%SystemRoot%\XPGina.dll" /F
1 n7 p* S1 e8 {    )
! ~; Y/ Y' u4 f' |: V; {
& o0 _/ {; U) D" ~) g       最后,整个操作步骤我还想补充几点说明:1 m9 n% M6 k; a7 j. t8 P
8 u& Y, Y: N/ ?7 V
       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。* J' s1 G- y. V0 t" D" U( @: U

; k8 D# ^# i& C" q8 g       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。
, [: B; o8 D& J7 Y8 n! M8 L! Z0 P& P. H; J
       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。
$ ~( Y* y: p0 \% u: Q# N( J/ ?$ C, O! _
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。
- v# ?  K# {' i7 ]  J9 C9 l0 s  D. {6 f" |
       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-16 20:00

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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