制作ADM模板,自定義登陸畫面:常??吹脚笥褌?yōu)榱税l(fā)布一個(gè)注冊表的鍵值而不辭勞苦的寫vbs,但vbs執(zhí)行效率較低,而且不太規(guī)范,如果使用ADM模板就好多了。但常常又苦于手寫ADM模板之苦,本文描述了使用Policy Template Editor (http://www.tools4ever.com/products/utilities/policytemplateeditor/ )制作ADM模板的過程,希望能夠?yàn)榕笥褌儙硪粋€(gè)稍微便捷一些的方法。 下圖展示了編輯的主畫面,在隨后的描述中依次講述它們的操作方法。這些方法制作出的模板適合于win2k sp4 ,winxp pro xp2 以及win2k3 sp1 GPMC的環(huán)境。
操作的過程,大多都在Policy 菜單上,從上至下執(zhí)行。為了顯示編輯項(xiàng)目,從而設(shè)定相關(guān)的參數(shù),我們選擇Edit菜單,單擊 Properties…。這樣就會彈出屬性對話框,為了便于操作,請勾選 Keep on top 。 第一步:New Version。在其屬性對話框上填寫該策略應(yīng)該使用的策略編輯器的版本。版本設(shè)置如下: 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 | (關(guān)于這個(gè)版本,有個(gè)很典型的錯(cuò)誤。當(dāng)使用winxp sp2的策略編輯器編輯了基于win2k ad的GPO后,再次使用win2k 的策略編輯器打開該GPO的時(shí)候,系統(tǒng)就會提示錯(cuò)誤"The following entry in the [strings] section is too long and has been truncated" 。這是由于當(dāng)使用winxp sp2下的策略編輯器后,它將會使用新的adm模板覆蓋win2k中的模板,這導(dǎo)致新模板中的版本信息和相關(guān)的策略設(shè)定(特別是防火墻等),不能為win2k的策略編輯器所識別。這需要安裝一個(gè)補(bǔ)丁,關(guān)于這個(gè)問題的描述見于http://support.microsoft.com/default.aspx?scid=kb;zh-cn;842933 ) 第二步:New Class。在菜單上選擇是Machine or User,前者指定當(dāng)前策略適用于計(jì)算機(jī)策略,后者則是用戶策略。這里當(dāng)然選擇Machine計(jì)算機(jī)策略,因?yàn)檫@個(gè)策略應(yīng)用的時(shí)候,用戶還沒有登陸呢。 第三步:New Category。 包括Category 以及 Policy中的各個(gè)項(xiàng)目,我們都可以使用變量帶替換那些名稱、鍵值等常量,引用變量名必須以兩個(gè)感嘆號開頭。例如:!!winlogon 您也可以直接寫那些名稱、鍵值,而不使用變量,當(dāng)然為了書寫規(guī)范和以后的debug,還是建議您使用變量替換。 這里我就用它來替換新的Category的名稱,如何做呢?請選擇 Policy 菜單- String table… 然后點(diǎn)擊 Add 按鈕來添加變量,其中Search string就是變量名,這里就用winlogon好了(注意這里定義變量,不要用感嘆號),Display string就是變量所代表的值,這里的名稱叫“登陸選項(xiàng)”。這里所定義的變量表,在最終的ADM文件中就對應(yīng)了[STRINGS]小節(jié)中所申明的部分(見于本文附錄的ADM文件內(nèi)容) 制作完畢后,體現(xiàn)在策略編輯器中的樣子就如同下圖。我將這個(gè)圖放在這里,以便大家在后面的描述中可以對照相關(guān)項(xiàng)目的位置。
 在“登陸選項(xiàng)”的屬性窗口上,我們還能夠看到一個(gè)設(shè)置項(xiàng):Registry Key 這個(gè)設(shè)置項(xiàng)在其下的層次結(jié)構(gòu)中是可以繼承的,也就是說,如果在這里設(shè)置了Registry Key,那么在當(dāng)前Category下所有的項(xiàng)目屬性中,default registry key就使用此設(shè)置,從而簡化了設(shè)置。這里我們設(shè)置為Software\Microsoft\Windows NT\CurrentVersion\Winlogon 因?yàn)殡S后的四個(gè)策略項(xiàng)都是在這個(gè)子鍵上。 第四步:New Policy。這里僅取其中一個(gè)項(xiàng)目“登陸banner”來說明制作的過程,其他類同。 ADM也就是說工具中所能定義的最終展現(xiàn)在策略編輯器的部分,就是上圖中紅框表示出來的兩個(gè)部分,其他部分都是標(biāo)準(zhǔn)框架,是系統(tǒng)定義好了的,不用我們?nèi)⑴c。 1、定義新的策略項(xiàng)。 選擇 Policy 菜單,選擇 New Policy。然后選擇出現(xiàn)的策略項(xiàng),嗯,這個(gè)時(shí)候,工具暫時(shí)將它命名為 New,那么我們選擇它,在其屬性頁上,General --- Policy name,我把它取名 !!GinaBannerBox 。奧,是引用變量了,那么我們選擇 Policy 菜單- String table… 然后點(diǎn)擊 Add 按鈕來添加這個(gè)變量,其中Search string就添GinaBannerBox,Display string就要填這個(gè)策略的名字了,這里的名稱叫“登陸B(tài)anner”。 奧,這里就可以看到了,Registry Key Use default,正好。下面的其他項(xiàng)目不要?jiǎng)印?br>再來,選擇 Optional Windows2000 specifications 。我們?yōu)檫@個(gè)策略項(xiàng)作些說明,這里的說明最終表現(xiàn)在策略編輯器中,就是上圖中“解說”頁面中看到的。那么勾選 Explain,填入” 當(dāng)您按下Ctrl+Alt+Del組合鍵后,出現(xiàn)在登陸窗口上的橫幅圖片。這里需要指定自定義GinaDll的文件位置,這個(gè)位置應(yīng)該是計(jì)算機(jī)帳戶在啟動(dòng)期間可以讀取的位置,例如:fileserversharefoldermsgina.dll。請注意此共享文件夾的權(quán)限設(shè)置應(yīng)至少為計(jì)算機(jī)帳戶可讀。”(不包含引號) 2、定義新的Part。 大家也看到了上面的解釋,我必須在策略項(xiàng)的設(shè)置part中,為用戶作一個(gè)例子,否則用戶在填寫自定義的MSgina文件路徑的時(shí)候,會感覺有些麻煩。奧,就像在設(shè)置SUS模板的時(shí)候,填寫SUS服務(wù)器的路徑一樣,得讓用戶知道模板所需要的格式。 那么,我選擇 Policy 菜單,New Policy Part,Text。來在當(dāng)前Part添加一行靜態(tài)的文本。在其屬性中 Text一欄填入sample: serversharefoldermsgina.dll 這里插入的Part的類型,也就關(guān)聯(lián)了相應(yīng)的注冊表鍵值類型,對應(yīng)的描述如下: 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. | 好了,下面一行就應(yīng)該讓用戶填寫MSgina file的路徑了,由于它的類型是字符串的,那么按照上面的表格中所述,這里插入Part 的類型就應(yīng)該是 EDITTEXT。選擇它的屬性頁。 Label一行只是用于在adm中描述這個(gè)Part的名字,與其他任何對象都無關(guān)系,這里就填入 Banner 好了。 勾選 Default value:應(yīng)該填入一個(gè)該策略項(xiàng)的缺省值。就是當(dāng)用戶在策勒編輯器中點(diǎn)選“啟用”該策略項(xiàng)的時(shí)候,系統(tǒng)立刻就會出現(xiàn)的缺省值??梢圆槐卦O(shè)置它,但用戶每次填的時(shí)候就會感覺麻煩些。這里還是用變量 !!GinaDll,那么我需要選擇 Policy 菜單- String table… 然后點(diǎn)擊 Add 按鈕來添加這個(gè)變量,其中Search string就添GinaDll,Display string就要填Gina file的路徑了,這里為了實(shí)驗(yàn)的方便,就填“c:msgina1.dll”。當(dāng)然這樣設(shè)置的話,client在啟動(dòng)的時(shí)候,就會在當(dāng)前計(jì)算機(jī)的C盤根目錄尋找名為msgina1.dll的文件,用以替換系統(tǒng)MSGina文件。隨后,我將編輯Ginadll文件,并將它放在client的C盤根目錄,并命名為msgina1.dll Registry Key就使用 Use default好了。 Value name: 就是說在當(dāng)前子鍵下應(yīng)該創(chuàng)建什么鍵值呢?當(dāng)然應(yīng)該是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 是個(gè)較小的位圖,格式為 413*72,用于user login過程和鎖定畫面;107 是個(gè)較大的位圖,格式為 413*88,用于登陸驗(yàn)證的畫面。至于如何加工這個(gè)文件中的資源,就要看您的創(chuàng)意了 :)到這里,整個(gè)ADM模板制作過程就結(jié)束了,讓我們在DC的GPMC中加載這個(gè)模板,套用計(jì)算機(jī)策略,然后在client得計(jì)算機(jī)上執(zhí)行g(shù)pupdate /target:computer /force,隨后注銷,來看看策略應(yīng)用后的效果:
 ADM 模板文件: 如下,大家可以將它修改后保存為.adm文件,然后在策略編輯器中,計(jì)算機(jī)部分的管理模板中加載它。如果加載后,其下的策略項(xiàng)目不可見,請右鍵單擊“系統(tǒng)管理模板”,選擇“篩選”,取消勾選“只顯示可以完全管理的策略”,點(diǎn)擊確定。 ------------------------------------------- 不包含這一行 ---------------------------------- #if version >= 2 CLASS MACHINE CATEGORY "!!winlogon" KEYNAME "SoftwareMicrosoftWindows NTCurrentVersionWinlogon" POLICY "!!LogonPromptBox" #if VERSION >= 3 EXPLAIN "當(dāng)您按下Ctrl+Alt+Del組合鍵后,出現(xiàn)在登陸窗口上的提示信息。" #endif PART "LogonPrompt" EDITTEXT VALUENAME "LogonPrompt" DEFAULT "!!LogonPrompt" END PART END POLICY ; !!LogonPromptBox POLICY "!!GinaBannerBox" #if VERSION >= 3 EXPLAIN "當(dāng)您按下Ctrl+Alt+Del組合鍵后,出現(xiàn)在登陸窗口上的橫幅圖片。這里需要指定自定義GinaDll的文件位置,這個(gè)位置應(yīng)該是計(jì)算機(jī)帳戶在啟動(dòng)期間可以讀取的位置,例如:fileserversharefoldermsgina.dll。請注意此共享文件夾的權(quán)限設(shè)置應(yīng)至少為計(jì)算機(jī)帳戶可讀。" #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 "當(dāng)您按下Ctrl+Alt+Del組合鍵后,出現(xiàn)在登陸對話框第三行“登錄到”欄中,默認(rèn)登陸網(wǎng)域。" #endif PART "DefaultLogonDomainName" EDITTEXT VALUENAME "DefaultDomainName" DEFAULT "!!DefaultDomainName" END PART END POLICY ; !!DefaultDomainNameBox POLICY "!!WelcomeTitleBox" #if VERSION >= 3 EXPLAIN "當(dāng)您按下Ctrl+Alt+Del組合鍵后,顯示在登陸窗口標(biāo)題欄上的信息" #endif PART "WelcomeTitle" EDITTEXT VALUENAME "Welcome" DEFAULT "!!WelcomeTitle" END PART END POLICY ; !!WelcomeTitleBox END CATEGORY ; !!winlogon #endif [STRINGS] DefaultDomainName ="win2k3.com" GinaBannerBox ="登陸B(tài)anner" winlogon ="登陸選項(xiàng)" WelcomeTitleBox ="登錄窗口標(biāo)題" LogonPrompt =" Im Neo.Who are you?" DefaultDomainNameBox ="默認(rèn)登陸網(wǎng)域" GinaDll ="c:msgina1.dll" WelcomeTitle ="for Matrix" LogonPromptBox ="登陸提示信息" ------------------------------------------- 不包含這一行 ---------------------------------- ADM文件的書寫規(guī)則: 關(guān)于ADM文件的書寫規(guī)則及相關(guān)關(guān)鍵字的使用,請參看 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 中創(chuàng)建自定義管理模板http://support.microsoft.com/kb/323639/zh-cn Gnaw0725 注:在使用Policy Template Editor的過程中,可能會感覺刪除對象的時(shí)候,直接按del鍵,程序沒有任何反應(yīng),此時(shí)可以選擇Edit菜單中的Delete項(xiàng)。 |