找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室
* ]7 V3 V2 c: I1 E: f+ P) ?3 X# R8 w
       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。0 M; ?/ D4 {6 f; j, W

- H4 O) N% S- E4 p% s; m       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2
! M# N% P( c" G  J; @6 u* d  {# J  [* V4 u
       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作
$ y3 n4 Z: a: g" b/ X   
. \+ ~- r$ o5 N* f
  k( C* ]* r+ Y  x+ ~/ u0 t( c

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

* w$ A( Y/ |% O. l: e       OK,下面是具体操作步骤:9 N1 K& @/ E8 B
       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)' v/ D0 M8 N  @9 ]% M1 I

" s) i3 V7 P8 H+ C5 @1 i& t       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示! J9 @0 f! L+ C7 K4 v( @

+ [  ~$ t# C# Q8 \4 F, k       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。
! Y, N2 ~$ \5 p6 ~; j: Q  K& |8 Y! v( |0 l  h
       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.# D! F! J8 `4 t, {# D

; }7 o2 @' T1 w8 I" [# P              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。  p$ ^- e; m1 k; a/ N
       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。0 \6 Y) H% z( h5 o
& M) W3 l. z9 d2 K0 Q
       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。 . ?! d& v- ~; ]7 |$ P2 f
   
. L# t8 d) J3 K8 N' U
; E1 X/ d8 b5 K$ S
4 K6 J& [6 B2 u+ M' J
' ~" D7 l- a4 O* [1 u
* p/ i. W! M6 [1 n$ C- z9 g8 H
* _4 k3 N: u+ V5 ]  l' [
  
  C) S; a. L4 o$ ^" t

2 f. t% x3 K% A9 ^4 W* j* C2 h
5 A: Z* g; }/ B) n1 K       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。
9 G* w. t" T% U) E( \- h$ g  a2 O9 Z$ x4 {, u5 W" i: G
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:% u, p9 k3 [- |+ |# B* o

9 `, C1 d4 w- r% ~    @echo off8 \: V( I7 {# Q' T9 e: H
    if exist c:\windows\XPGina.dll (" \2 S+ W1 {9 w2 |
    echo Windows Registry Editor Version 5.00 >> .\reg.reg# a3 C7 w  @, J
    echo . >> .\reg.reg8 c3 v! G" k6 _4 ~. j/ y' m
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg( x# w8 e: B! Z+ c, _3 E
    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg
9 F8 O* C6 \/ q& s& v+ X5 x0 p    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg' Q+ T  F4 h0 A2 b2 n/ X- Y! \  L
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg! Z+ {/ m( I/ `7 x+ k1 f+ g7 G
    regedit /s .\reg.reg
4 M; c+ f' E9 F* Z, x( I    del /F .\reg.reg
! g0 ~/ G& a- x+ g6 \3 A8 S5 g' }    ) else (
! ]6 e9 Q6 o5 r- N9 j: U, m    net use z: /del$ |9 a' L5 }; \$ J( V% u
    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com
% ]; f' `' S- o+ E. Z: D0 X9 Z    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n) }  ~" Q8 g2 X; i3 M" y- ]
    net use z: /del
1 q$ \" U* D" a% M( f* Y/ g    )
% o6 C- ?* g, a' K& P# o4 J0 e' M$ g- H3 A$ d
       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。: \5 A: S: r1 g- ]2 I: `+ q2 Y
" w9 j1 {* O& L; d
       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
7 B1 Z6 Q! ^; F. W
  K) z: _% q% m# a1 z$ a    @echo off
! \# ^( B/ }+ K6 ]    if exist %SystemRoot%\XPGina.dll (% T' a7 ~0 a' m4 L0 h6 `+ e
    echo Windows Registry Editor Version 5.00 >> .\reg.reg  U7 B' l: i/ }. r- e
    echo . >> .\reg.reg9 o& D, N9 r9 w$ o0 M& g  K  ~
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg, X: ~; w! W) S
    echo "LogonPrompt"=- >> .\reg.reg6 T) Z5 d- b- z( a. x
    echo "Welcome"=- >> .\reg.reg* a; {" R  W8 ?2 \1 w2 I+ x+ G
    echo "GinaDLL"=- >> .\reg.reg8 ^) t, L8 m, d/ j
    regedit /s .\reg.reg
; m% l( E8 J) f6 i    del /F .\reg.reg' o: L  D  q! _# b2 F4 w
    ) else (, M0 I! W$ `+ s* ]; @
    del "%SystemRoot%\XPGina.dll" /F( O9 \% C/ [& [) B' t
    )7 q1 y* V) I3 n2 m9 |3 o4 F

. @, p' j6 [1 Y6 |       最后,整个操作步骤我还想补充几点说明:
+ y7 v1 g& }0 b% D5 u5 i; o7 d7 ?/ P7 \
' E2 w& `2 [' k6 \) k       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。3 Q# N) P3 s: J1 ^
  f+ [& ]# M! i' _. f
       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。3 I) X5 W/ P7 C6 P1 g$ D8 k" A: U. b
7 \+ R6 K. M* p; ^$ ?. {7 h
       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。0 D2 n, `9 c5 d4 M$ t( l. P
1 b) Z! {7 Q5 j' Q: ?- j
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。# d- P( ?# n% a: q
, a8 j2 `+ \: Y  J' P& t/ n8 |0 R! A  E
       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-2 14:02

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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