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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室# v6 A1 u0 [0 z

' g( y3 G0 C& B: i! e" `, ]       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。3 \4 n1 i9 Z. \) b' H) n+ L

) n- }. T4 v, r( n8 q$ J; l       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2. O# Z5 C. x4 T% w* D! Y3 b

& a' `$ o, E$ z: x7 N3 b) M0 [3 @: [7 O       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作! E+ |; k. A  q  `3 b3 ?6 S
   
$ B' I" M5 \2 s1 R

/ T& ~3 x3 P, T: \4 s) L! u6 e% s
7 P2 y2 H! A* Y2 \4 d  K

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

$ l& D; G4 U! d* x$ f% F# O2 z7 d. h       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 / M! a" q! _; t# w( t- p1 C, Z
   7 T" U# d- s1 P8 e; A% v
# W7 C9 B( V* ]' v% E

* n. o" t8 T# M$ C. M5 E

6 S* N3 ]5 a1 K/ g4 r4 N, n. l0 `0 D1 a3 v" v" I

1 i" T0 Y: R/ p' G8 D  
; C4 g& ~5 a1 [) r
% L4 {3 R( P2 [* V
& y  ?- f8 G" Y. r. D& \
       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。  ?2 {* Y, G+ D
: r! ^! t5 ]% j/ P- P$ ^0 m
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:4 F0 D5 @( J% b# b4 N) `

- z3 G6 m1 u/ S    @echo off. u6 L0 F8 j/ [7 p
    if exist c:\windows\XPGina.dll (
7 s- ^5 {; A6 `+ e5 h& {    echo Windows Registry Editor Version 5.00 >> .\reg.reg+ K/ R$ w# d. A& b9 s: z. V
    echo . >> .\reg.reg
' @  I3 a# k: n    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
+ V; B. T# w/ I, c% {    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg
) Z7 D, D7 ?& F6 m, A+ K$ [    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg6 h  A% n4 e( `$ f7 D( e0 {" f
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
" I) V, S# f& K# O/ \    regedit /s .\reg.reg
% H2 F' v+ S# R. v    del /F .\reg.reg; q+ p" l8 a% S6 B) E, I! o
    ) else (
" a4 ?9 ?5 m. X    net use z: /del5 D* j( B$ j& F+ I6 f- s
    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com% H8 m  J$ V% d: L0 j& Z
    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n+ ?1 p" c% E$ s$ d
    net use z: /del
; r- D( ^0 s  S+ j" x/ \    )
& G/ b( G) M& E8 U0 L" Q* P) c0 h  _" Q( ]
       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。+ c; {, o- {; n, s+ ?, M" k. g) n# W

% R, {( g6 c  G       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
$ E8 {$ o, R! b+ b5 J
- }: t6 z) y& T0 W# Y6 r! g1 t4 g    @echo off4 ~, ?- x3 D3 }. T# X
    if exist %SystemRoot%\XPGina.dll (
6 C8 N9 w$ \/ Z! }+ Y$ ]( N, v    echo Windows Registry Editor Version 5.00 >> .\reg.reg& N& A7 b/ |9 A- Y5 a4 C! P# I
    echo . >> .\reg.reg4 s7 C6 R, g) S" r* T5 m# v, K8 A
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg: \2 q, h( y) H8 N# q+ |/ X
    echo "LogonPrompt"=- >> .\reg.reg; l2 b. f8 O6 ?+ T( l
    echo "Welcome"=- >> .\reg.reg
3 J" ?" a& o" y    echo "GinaDLL"=- >> .\reg.reg" Q/ B' d! [; c
    regedit /s .\reg.reg: s! M  T4 @% S. W  k0 X6 X) x
    del /F .\reg.reg
" u# ^" s0 y( v  G1 {    ) else (
* r# n5 k( U* H( ~: t1 y2 u    del "%SystemRoot%\XPGina.dll" /F
9 |. Z% e0 R( v' b% x    )9 O6 y  o6 w+ |3 P( Q5 r# c: ~1 h
# N' @0 M7 v% }) k/ z
       最后,整个操作步骤我还想补充几点说明:
1 Y- e9 t0 x! f0 y. U
$ Z* R6 ?( w  |5 s+ J1 _       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
" Q  l. Y" Y, N9 z" s' C0 M" i: r1 a6 R  R$ \6 I, j5 b& p
       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。, V& [9 A; u! F2 n- v3 g
8 r" o4 J, G2 `% e
       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。  e8 e! ]8 K( L# ^
6 m% L' y& G+ |+ J2 y; k
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。0 Y8 s, J" m9 T
; D& H( ?% K. Y* P: \' `% J
       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鲁ICP备19052200号-1

在本版发帖
关注公众号
QQ客服返回顶部