找回密码
 注册

QQ登录

只需一步,快速开始

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

[复制链接]
发表于 2009-4-16 10:26:35 | 显示全部楼层 |阅读模式
出处:中国IT实验室) j4 O6 \7 }2 J1 j

0 l4 b* M* |6 J3 g/ v  T       个性化Windows XP客户端的登录界面     一般来说,XP客户端登录界面分为两种,一种是使用“欢迎屏幕”;另一种是不使用“欢迎屏幕”的经典登录界面。大家都知道,XP系统一旦加入域后,就不再使用“欢迎屏幕”。所以,今天我们就来讨论一下如何个性化域中的XP登录界面。$ X7 g& g4 {& n& }4 A2 J
  b& w- H! O) X
       先让大家先看一下,我们公司现在和以前使用过的XP个性化登录界面。如图1 2* c* S! O6 b: W7 Z6 N  o
# [$ D$ _2 w  |) M: O1 ]
       是不是还不错呢?其实做法很简单,下面我就一步一步来和大家分享一下如何操作
8 N* O9 e1 \4 M! q  h/ [    " L# {4 h. Y" ?; U9 H) ~. S

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

3 D& p0 y5 M: y4 E- i: w       OK,下面是具体操作步骤:$ \3 a' S7 s6 ~. \  R( I# l
       1.        将XP系统中的C:\WINDOWS\system32\msgina.dll这个文件复制一份出来,用于编辑之用,并且重命名为重命名为XPGina.dll(名字随便取啦)
, s7 t0 b3 S5 l2 F% X. e; H- w* O( D0 H! X# P7 M/ l
       2.        用ResHacker或者Exescope(我这里使用ResHacker给大家做演示)打开XPGina.dll后,展开“位图”,在“101”,“107”下面均有个“2052”。如图3所示
+ ]3 l' b2 T# W2 b- x1 R% Q# {! n$ T9 Q
       3.        我们的目标就是替换这两个地方的图片。其中101处的图片大小为 413*72,用于用户登录过程和锁定画面;107 则是个较大的位图,格式为 413*88,用于登陆验证的画面。请尽量保持新图片的大小和系统自带图片大小的一致性,否则很影响美观性。# n/ H8 l& J2 ^0 W

- Y, e2 `# c  i# _1 H5 E2 {0 ^- q       4.        我以101为例来说明如何替换这个图片。点击ResHacker的“操作”按钮,选择“替换位图”。如图4.4 O" G; Z) ^+ p9 E/ s$ d
! [( i% y) Y2 h! v. C
              然后选择“打开新位图文件”,打开你事先准备好的,经过你无限创意的位图图片(大小413*72),点击“替换即可”。如图5和6。( ~( ^2 u+ D; r. z0 }! X! i
       5.        107的替换步骤就不再赘述了,和前面的操作步骤完全一样。只不过图片选择413*88的那张。9 D$ U% X. I& M0 u7 ]1 N  }

- b( k5 {. ]* }$ }       6.        全部修改完以后,点击ResHacker的“文件”,“保存”即可。这样,这个文件就被我们处理好了。
. e9 H8 z0 x# l# z   
9 j- f4 S# }9 p: Z3 b) }
3 Z; J" T8 \$ O* X- i
6 k' m0 `0 A2 x1 Y4 K/ B
5 r' B3 [7 `9 U7 R2 H
8 K+ K( O; `9 R: v5 d0 v

  N; B) c: y! s. ^( i  O  + H! K4 v# `2 p1 {3 G1 f  i" I
1 p) ?1 h9 V2 q; X! Y

, d0 ]* E% e3 Z- s! Y       个性化的文件我们已经有了,但是如何让操作系统启动的时候调用这个文件呢?其实,我在前面已经说过了,在注册表HKLM\Software\MicrosoftWindows NT\CurrentVersion\Winlogon值下新建一个REG_SZ的字符串值,将内容设置为C:\windows\XPGina.dll(前提是确保这个个性化文件在这个路径中,否则系统启动的时候会找不到这个文件而报错)。重新启动计算机就可以看到你的劳动成果了,很激动吧。/ q3 ^. I0 S7 y2 ^" R8 T+ o+ _
+ {. P9 n& r- o( o0 B' C  P
       操作已经接近尾声了,但是如何在公司的机器上大规模部署起来呢?总不能一个一个的去客户端做注册表修改吧?!当然不必!我们可以使用启动脚本、ADM模板来批量操作。下面我贴出我们公司目前的启动脚本文件:
$ b- V& L6 j# M
: b+ f/ e9 J9 X3 S9 m3 {3 W. a3 z    @echo off; U/ f2 P, y5 _. ~9 C9 z  V/ T
    if exist c:\windows\XPGina.dll (2 ]6 W/ c* w' ?7 P' m- t' R/ F0 h
    echo Windows Registry Editor Version 5.00 >> .\reg.reg
, x$ Y3 s! M4 g* @1 p: r6 G. a    echo . >> .\reg.reg
7 Y, j  w+ }9 V" _% `    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
* S" @% i" M6 b# L* g    echo "LogonPrompt"="                         祝您工作顺心!" >> .\reg.reg: W9 l9 X  {# k' t! k6 s
    echo "Welcome"="(BY IT支持维护)" >> .\reg.reg5 W2 W$ L9 `5 ]$ l; @8 u, ~
    echo "GinaDLL"="c:\\windows\\XPGina.dll" >> .\reg.reg
- V3 M+ k2 k/ U; P    regedit /s .\reg.reg/ X5 C' Z% f* ?( n; P& D' Z
    del /F .\reg.reg
, s$ Y( W# v$ f) p& m  k    ) else (7 Q1 d9 O8 }, Q- P% Z
    net use z: /del
, p; }, j" p8 B( P    net use z: \\FileServer\\Share  "password" /user:username@yourdomain.com3 x! [# |0 C" O# ]5 Y. J
    copy z:\ XPGina.dll "c:\windows\XPGina.dll" /n
3 G. H; K1 i7 E/ C    net use z: /del. d" W' l* r" l* e& o
    )
/ l& N" N' a( I4 ~, d) |7 X2 O- U% x/ I1 h
       对以上批处理文件,我稍微做一下解释。大致思路是先检查C盘Windows目录下是否有XPGina.dll这个文件,如果没有就从Z盘拷贝(Z盘是从文件共享服务器FileServer上映射的一个网络驱动器),拷贝完成后再断开驱动器的映射。如果有,就导入reg.reg注册表。至于注册表中具体写的什么内容,相信大家从批处理文件中一看就可以看出来。导入完成以后就删除该注册表文件。& P# o2 ~' C) Q  p$ }
4 Z! S8 X6 G# r  j
       顺便稍上40楼朋友给我们带来的删除前面注册表操作的批处理脚本,这样就可以回滚操作了,
, V1 C4 c( _7 ~7 _5 ~) {% T6 f6 e, S! t/ C) \
    @echo off5 r$ c) Z  f8 n+ n/ R: o  W
    if exist %SystemRoot%\XPGina.dll (
' n" Z6 c" S0 g3 N3 S: O    echo Windows Registry Editor Version 5.00 >> .\reg.reg# v$ R4 }) ^. W; J1 @0 k4 A/ \
    echo . >> .\reg.reg- R* y/ C' q5 [' k
    echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >> .\reg.reg
6 N4 R$ }9 N# L- |8 u/ b; W    echo "LogonPrompt"=- >> .\reg.reg- C9 |( x$ m1 o, W$ @, ~
    echo "Welcome"=- >> .\reg.reg) @" I* t3 a: e$ k$ L1 H# H
    echo "GinaDLL"=- >> .\reg.reg
2 Q4 ]. {% H1 u/ F! ?" a3 Y    regedit /s .\reg.reg
4 B% y" T3 A7 c    del /F .\reg.reg8 B4 [4 Q  x6 G! a( Q' `
    ) else (2 y1 s* L7 O8 P9 [7 T
    del "%SystemRoot%\XPGina.dll" /F
* z7 x  w7 N1 [    )) k% D3 S" e8 R3 }( Q1 n$ x; l

" ]; L3 _. \: _& F; R- p) j       最后,整个操作步骤我还想补充几点说明:1 W/ X- g. \9 W2 l( H1 j
3 j2 K) F5 x( ~
       1.        操作系统不同,需要替换的位图文件的位置也不同,例如,XP是替换101和107,而2003就未必是这个地方了。不要试图用XP的GINADLL文件用在2003上,否则2003的登录界面很难看,其实也说不上难看,只是图片不是我们预期的图片。
. i" \- i' E, K5 ^6 A- f2 t: {/ L
3 i4 x0 P9 V& x9 Z3 h# T8 D       2.        在批量实施的时候,请用启动或关机脚本。否则可能会因为权限问题,无法写进注册表数据。% p( X" N9 u. P/ P! ~' W7 g

6 U1 K6 ~7 m/ O, a       3.        在纯安全模式下,个性化界面不会生效。这也就给了当我们遇到第4点中的问题时提供了操作可能。9 l4 x4 G1 \0 c0 r9 v
* L) @) c6 d8 M' I; ?( s) |5 X
       4.        如果遇到应用错误或者不想使用个性化登录界面,请直接删除注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的GinaDLL。重新启动计算机就行了。) _7 C8 W2 Y* l6 H! v
5 Q% H" e, ~) d6 K$ W% J9 f3 W, U
       OK,整个步骤到此就结束了,虽然没有什么技术含量,但是我敢保证,如果你在公司所有的计算机上都个性化了登录界面,例如加上公司的logo,那么一定会给同事们或老板耳目为之一新的感觉。记得有家公司来我们公司参观的时候,看到个性化登录界面后,问我们公司是不是和番茄花园合作,做了系统美化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-15 12:53

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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