分享

制作ADM模板,自定义登陆画面-活动目录SEO博客

 twins2twins 2010-01-21

 

制作ADM模板,自定义登陆画面

制作ADM模板,自定义登陆画面:常常看到朋友们为了发布一个注册表的键值而不辞劳苦的写vbs,但vbs执行效率较低,而且不太规范,如果使用ADM模板就好多了。但常常又苦于手写ADM模板之苦,本文描述了使用Policy Template Editor  (http://www./products/utilities/policytemplateeditor/ )制作ADM模板的过程,希望能够为朋友们带来一个稍微便捷一些的方法。
下图展示了编辑的主画面,在随后的描述中依次讲述它们的操作方法。这些方法制作出的模板适合于win2k sp4 ,winxp pro xp2 以及win2k3 sp1 GPMC的环境。
Image Hosted by ImageShack.us

操作的过程,大多都在Policy 菜单上,从上至下执行。为了显示编辑项目,从而设定相关的参数,我们选择Edit菜单,单击 Properties…。这样就会弹出属性对话框,为了便于操作,请勾选 Keep on top 。

第一步:New Version。在其属性对话框上填写该策略应该使用的策略编辑器的版本。版本设置如下:

Operating System Version Type
Windows XP SP2 5.0 Group Policy
Windows Server 2003 and Windows XP 4.0 Group Policy
Windows Server 2000 3.0 Group Policy
Windows NT® 3.x and 4.x 2.0 System Policy
Windows 95 1.0 System Policy


(关于这个版本,有个很典型的错误。当使用winxp sp2的策略编辑器编辑了基于win2k ad的GPO后,再次使用win2k 的策略编辑器打开该GPO的时候,系统就会提示错误"The following entry in the [strings] section is too long and has been truncated" 。这是由于当使用winxp sp2下的策略编辑器后,它将会使用新的adm模板覆盖win2k中的模板,这导致新模板中的版本信息和相关的策略设定(特别是防火墙等),不能为win2k的策略编辑器所识别。这需要安装一个补丁,关于这个问题的描述见于http://support.microsoft.com/default.aspx?scid=kb;zh-cn;842933
第二步:New Class。在菜单上选择是Machine or User,前者指定当前策略适用于计算机策略,后者则是用户策略。这里当然选择Machine计算机策略,因为这个策略应用的时候,用户还没有登陆呢。
第三步:New Category。
包括Category 以及 Policy中的各个项目,我们都可以使用变量带替换那些名称、键值等常量,引用变量名必须以两个感叹号开头。例如:!!winlogon 您也可以直接写那些名称、键值,而不使用变量,当然为了书写规范和以后的debug,还是建议您使用变量替换。
这里我就用它来替换新的Category的名称,如何做呢?请选择 Policy 菜单- String table… 然后点击 Add 按钮来添加变量,其中Search string就是变量名,这里就用winlogon好了(注意这里定义变量,不要用感叹号),Display string就是变量所代表的值,这里的名称叫“登陆选项”。这里所定义的变量表,在最终的ADM文件中就对应了[STRINGS]小节中所申明的部分(见于本文附录的ADM文件内容)
制作完毕后,体现在策略编辑器中的样子就如同下图。我将这个图放在这里,以便大家在后面的描述中可以对照相关项目的位置。
Image Hosted by ImageShack.us

在“登陆选项”的属性窗口上,我们还能够看到一个设置项:Registry Key 这个设置项在其下的层次结构中是可以继承的,也就是说,如果在这里设置了Registry Key,那么在当前Category下所有的项目属性中,default registry key就使用此设置,从而简化了设置。这里我们设置为Software\Microsoft\Windows NT\CurrentVersion\Winlogon 因为随后的四个策略项都是在这个子键上。
第四步:New Policy。这里仅取其中一个项目“登陆banner”来说明制作的过程,其他类同。
ADM也就是说工具中所能定义的最终展现在策略编辑器的部分,就是上图中红框表示出来的两个部分,其他部分都是标准框架,是系统定义好了的,不用我们去参与。
1、定义新的策略项。
选择 Policy 菜单,选择 New Policy。然后选择出现的策略项,嗯,这个时候,工具暂时将它命名为 New,那么我们选择它,在其属性页上,General --- Policy name,我把它取名 !!GinaBannerBox 。奥,是引用变量了,那么我们选择 Policy 菜单- String table… 然后点击 Add 按钮来添加这个变量,其中Search string就添GinaBannerBox,Display string就要填这个策略的名字了,这里的名称叫“登陆Banner”。
奥,这里就可以看到了,Registry Key Use default,正好。下面的其他项目不要动。
再来,选择 Optional Windows2000 specifications 。我们为这个策略项作些说明,这里的说明最终表现在策略编辑器中,就是上图中“解说”页面中看到的。那么勾选 Explain,填入” 当您按下Ctrl+Alt+Del组合键后,出现在登陆窗口上的横幅图片。这里需要指定自定义GinaDll的文件位置,这个位置应该是计算机帐户在启动期间可以读取的位置,例如:fileserversharefoldermsgina.dll。请注意此共享文件夹的权限设置应至少为计算机帐户可读。”(不包含引号)
2、定义新的Part。
大家也看到了上面的解释,我必须在策略项的设置part中,为用户作一个例子,否则用户在填写自定义的MSgina文件路径的时候,会感觉有些麻烦。奥,就像在设置SUS模板的时候,填写SUS服务器的路径一样,得让用户知道模板所需要的格式。
那么,我选择 Policy 菜单,New Policy Part,Text。来在当前Part添加一行静态的文本。在其属性中 Text一栏填入sample:  serversharefoldermsgina.dll
这里插入的Part的类型,也就关联了相应的注册表键值类型,对应的描述如下:

Type Description
CHECKBOX Displays a check box. The value is set in the registry with the REG_DWORD type. The value is other than zero if the check box is selected and zero if it is not selected.
COMBOBOX Displays a combo box.
DROPDOWNLIST Displays a combo box with a drop-down list style. The user may choose only one of the entries supplied.
LISTBOX Displays a list box with Add and Remove buttons. This is the only PART type that can be used to manage multiple values under one key.
EDITTEXT Displays a text box that accepts alphanumeric text. The text is set in the registry with either the REG_SZ or the REG_EXPAND_SZ type.
TEXT Displays a line of static text. There is no associated registry value with this PART type.
NUMERIC Displays a text box with an optional spin control that accepts a numeric value. The value is set in the registry with the REG_DWORD type.


好了,下面一行就应该让用户填写MSgina file的路径了,由于它的类型是字符串的,那么按照上面的表格中所述,这里插入Part 的类型就应该是 EDITTEXT。选择它的属性页。
Label一行只是用于在adm中描述这个Part的名字,与其他任何对象都无关系,这里就填入 Banner 好了。
勾选 Default value:应该填入一个该策略项的缺省值。就是当用户在策勒编辑器中点选“启用”该策略项的时候,系统立刻就会出现的缺省值。可以不必设置它,但用户每次填的时候就会感觉麻烦些。这里还是用变量 !!GinaDll,那么我需要选择 Policy 菜单- String table… 然后点击 Add 按钮来添加这个变量,其中Search string就添GinaDll,Display string就要填Gina file的路径了,这里为了实验的方便,就填“c:msgina1.dll”。当然这样设置的话,client在启动的时候,就会在当前计算机的C盘根目录寻找名为msgina1.dll的文件,用以替换系统MSGina文件。随后,我将编辑Ginadll文件,并将它放在client的C盘根目录,并命名为msgina1.dll
Registry Key就使用 Use default好了。
Value name: 就是说在当前子键下应该创建什么键值呢?当然应该是GinaDll,那么最终写入client注册表的键值就是这样:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"GinaDll"=" c:msgina1.dll"
3、编辑GinaDll File。
源文件位于 %systemrootsystem32msgina.dll 。很多的资源编辑工具都拥有修改文件资源的功能,比如resourcehack or exescope,用工具编辑其Bitmap资源,找到101和107,101 是个较小的位图,格式为 413*72,用于user login过程和锁定画面;107 是个较大的位图,格式为 413*88,用于登陆验证的画面。至于如何加工这个文件中的资源,就要看您的创意了 :)到这里,整个ADM模板制作过程就结束了,让我们在DC的GPMC中加载这个模板,套用计算机策略,然后在client得计算机上执行gpupdate /target:computer /force,随后注销,来看看策略应用后的效果:
Image Hosted by ImageShack.us

ADM 模板文件:
如下,大家可以将它修改后保存为.adm文件,然后在策略编辑器中,计算机部分的管理模板中加载它。如果加载后,其下的策略项目不可见,请右键单击“系统管理模板”,选择“筛选”,取消勾选“只显示可以完全管理的策略”,点击确定。
------------------------------------------- 不包含这一行 ----------------------------------
#if version >= 2
   CLASS MACHINE
      CATEGORY "!!winlogon"
         KEYNAME "SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
         POLICY "!!LogonPromptBox"
            #if VERSION >= 3
            EXPLAIN "当您按下Ctrl+Alt+Del组合键后,出现在登陆窗口上的提示信息。"
            #endif
            PART "LogonPrompt" EDITTEXT
               VALUENAME "LogonPrompt"
               DEFAULT "!!LogonPrompt"
            END PART
         END POLICY ; !!LogonPromptBox
         POLICY "!!GinaBannerBox"
            #if VERSION >= 3
            EXPLAIN "当您按下Ctrl+Alt+Del组合键后,出现在登陆窗口上的横幅图片。这里需要指定自定义GinaDll的文件位置,这个位置应该是计算机帐户在启动期间可以读取的位置,例如:fileserversharefoldermsgina.dll。请注意此共享文件夹的权限设置应至少为计算机帐户可读。"
            #endif
            PART "sample:    serversharefoldermsgina.dll" TEXT
            END PART
            PART "Banner" EDITTEXT
               VALUENAME "GinaDll"
               DEFAULT "!!GinaDll"
            END PART
         END POLICY ; !!GinaBannerBox
         POLICY "!!DefaultDomainNameBox"
            #if VERSION >= 3
            EXPLAIN "当您按下Ctrl+Alt+Del组合键后,出现在登陆对话框第三行“登录到”栏中,默认登陆网域。"
            #endif
            PART "DefaultLogonDomainName" EDITTEXT
               VALUENAME "DefaultDomainName"
               DEFAULT "!!DefaultDomainName"
            END PART
         END POLICY ; !!DefaultDomainNameBox
         POLICY "!!WelcomeTitleBox"
            #if VERSION >= 3
            EXPLAIN "当您按下Ctrl+Alt+Del组合键后,显示在登陆窗口标题栏上的信息"
            #endif
            PART "WelcomeTitle" EDITTEXT
               VALUENAME "Welcome"
               DEFAULT "!!WelcomeTitle"
            END PART
         END POLICY ; !!WelcomeTitleBox
      END CATEGORY ; !!winlogon
#endif [STRINGS]
DefaultDomainName ="win2k3.com"
GinaBannerBox ="登陆Banner"
winlogon ="登陆选项"
WelcomeTitleBox ="登录窗口标题"
LogonPrompt ="                 Im Neo.Who are you?"
DefaultDomainNameBox ="默认登陆网域"
GinaDll ="c:msgina1.dll"
WelcomeTitle ="for Matrix"
LogonPromptBox ="登陆提示信息"
------------------------------------------- 不包含这一行 ----------------------------------

ADM文件的书写规则:
关于ADM文件的书写规则及相关关键字的使用,请参看
Group Policy ADM Files
http://www.microsoft.com/downloads/details.aspx?FamilyID=92759d4b-7112-4b6c-ad4a-bbf3802a5c9b&displaylang=en#filelist
Writing Custom ADM Files for System Policy Editor
http://support.microsoft.com/default.aspx?scid=kb;en-us;225087
Implementing Registry-Based Group Policy
http://www.microsoft.com/windows2000/techinfo/howitworks/management/rbppaper.asp
如何在 Windows 2000 中创建自定义管理模板http://support.microsoft.com/kb/323639/zh-cn

Gnaw0725 注:在使用Policy Template Editor的过程中,可能会感觉删除对象的时候,直接按del键,程序没有任何反应,此时可以选择Edit菜单中的Delete项。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多