Share via


Windows 系統管理

深究 Windows Vista 新增的群組原則範本

Darren Mar-Elia

 

摘要:

  • 深究 ADMX
  • 編輯 ADMX 檔案
  • ADM 和 ADMX 檔案的差異
  • 建立中央存放區

在 Windows Vista 以前,您在群組原則內可設定的登錄值都是由 ADM 檔案來控制,檔案中都使用加密和專屬的語法。除了 Microsoft 在標準 ADM 檔案中隨附的登錄值以外,如果還想要控制其他登錄值,您必須學習這種

語法並建立自訂 ADM 檔案。此外,這些 ADM 檔案會連同每一個群組原則物件 (GPO) 一起儲存在您的 Active Directory® 環境中,且每一個 GPO 和伴隨的 ADM 檔案也都會複寫到網域中的所有網域控制站。

隨著 Windows Vista™ 的問市,Microsoft 向群組原則登錄範本的領域邁出一大步。Windows Vista 大幅修改了 ADM 檔案的格式 (現在稱為 ADMX) 和這些檔案的儲存方式。在本文章中,我將著重於新的 ADMX 格式,並討論這些檔案和 ADM 的差別。我也會說明 Windows Vista 環境中如何處理這些檔案的儲存方式。

ADMX 的差異

在新的 ADMX 檔案格式與舊的 ADM 格式 (在 Windows NT® 4.0 時代就已出現) 之間,最大的差別莫過於 ADMX 已採用 XML 標準來描述登錄原則設定。有幾個理由可以證明這是非常好的做法。首先,XML 的編輯工具比編輯 ADM 語法的工具更多。其次,因為 XML 已制式化,一定會更容易建立工具來讓您知道如何將正確的標記放在正確的位置上,以建立格式正確的 ADMX 檔案。制式化代表任何 XML 運用方式 (例如 ADMX 格式) 都會有書面的結構描述,來描述可用的元素和屬性,以及其組織方式。本文稍後會舉例說明。

ADMX 和 ADM 的另一項基本差異,是主要 ADMX 檔案的字串區段,會獨立放在特定語言的 ADML 檔案中。如果您熟悉 ADM 檔案,您一定知道每一個檔案的最後都有一個以 "[strings]" 標記來界定的區段,您可以在此處指派文字字串的值,也就是您使用 [群組原則編輯器] 和 [系統管理範本] 時要顯示的字串。例如,您按一下任一原則的 [解說] 索引標籤時看到的文字,就是儲存在這個字串區段內。但問題是字串儲存在 ADM 檔案內,所以,如果您要在執行不同語言的 Windows® 系統上使用該 ADM,則必須建立新的 ADM 檔案,而且必須含有該語言的字串區段。

假設某人在法文版 Windows 上想要編輯已使用英文 ADM 的 GPO,則情況會更複雜。法文管理員在群組原則編輯器中只會看到英文。為了解決這個問題,Windows Vista 將 [strings] 區段獨立放在 XML ADM 語言 (或 ADML) 檔案中。如此一來,ADML 檔案就能夠以任何支援的語言發行,且很容易支援其他新的語言,不必修改儲存原則的主要 ADMX 檔案。更重要的是,當法文管理員在他的 Windows Vista 工作站編輯 GPO 時,群組原則編輯器會偵測到目前使用的是法文版 Windows,然後自動載入該 GPO 的法文 ADML 檔案。

只要開啟資料夾 c:\windows\policydefinitions ,您就可以看到 Windows Vista 隨附的所有 ADMX 和 ADML 檔案 (請參閱 [圖 1])。

圖 1 Windows Vista 中的 ADMX 檔案

圖 1** Windows Vista 中的 ADMX 檔案 **(按影像可放大)

請注意,在 [圖 1] 列出的檔案上方,有一個稱為 en-us 的資料夾。這就是特定語言的資料夾,其中會包含您在 PolicyDefinitions 資料夾中所看到 ADMX 檔案的 ADML 檔案 - 就這個案例來說是英文。每一個 ADMX 各有一個 ADML 檔案。撰寫本文時,Windows Vista 預設已包含 132 個 ADMX/ADML 檔案。下列是 Windows Vista 和先前版本之間的另一項重大差異:Windows XP 建立的 GPO 通常有五個 ADM 檔案,最大的是 System.adm,內含在原則控制下的大多數 Windows 元件的原則項目。在 Windows Vista 中,Microsoft 決定按照功能將 ADMX 檔案分類 - 因此 ADMX 檔案數量變得更多。每一個 ADMX 通常只涵蓋一個 Windows 元件 (例如,控制台、DNS 用戶端、Windows 檔案總管...等等)。

深究 ADMX

稍早說過,以 XML 撰寫 ADMX 是一大進步。但有許多系統管理員並不知道怎麼撰寫 XML,更遑論以 ADMX 所用的結構描述來建立原則延伸。自行建立 ADMX 的教學課程已超出本文的範圍,我們只要瞭解一下 ADMX 如何形成。

您可以在任何文字編輯器中開啟 ADMX 或 ADML 檔案 (就算是 [Notepad] 也可以),但編輯器一定要瞭解 XML 語法,否則沒什麼意義。我採用 Visual Studio®,因為 IntelliSense® 功能可幫我完成特定的元素。[圖 2] 顯示 Windows Vista 隨附的其中一個 ADMX 的前幾行。

Figure 2 ADMX 檔案的 XML 片段

<?xml version="1.0" encoding="utf-8"?>
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="0.9" schemaVersion="0.9"
  xmlns="https://www.microsoft.com/GroupPolicy/PolicyDefinitions">
  <policyNamespaces>
    <target prefix="AxInstSv" namespace="Microsoft.Policies.ActiveXInstallService" />
    <using prefix="windows" namespace="Microsoft.Policies.Windows" />
  </policyNamespaces>

如果您不熟悉 XML,可能會覺得看起來很奇怪,但其中許多 XML 元素在所有 ADMX 檔案中都會出現。例如,policyNamespaces 元素可在 ADMX 檔案環境中用來識別這一個 ADMX 檔案。

如果您曾在舊版的 Windows 中建立自訂 ADM 檔案,您就知道有一些標記 (例如 Category、Policy、ListBox 及 ActionList) 可用來定義在 [群組原則編輯器] 中出現的原則設定。其中有許多標記一樣不變,頂多只是在 ADMX 格式上稍有變化,但因為是以 XML 來表示,所以看起來相當不同。例如,我曾撰寫一個自訂 ADM 檔案,用途是在 Windows 內啟用各種記錄來解決群組原則的問題。[圖 3] 顯示這個自訂 ADM 的一個區段。後來我將這個檔案轉換成新的 ADMX 格式,如 [圖 4] 所示。

Figure 4 轉換成 ADMX 檔案之後的 ADM 檔案

<policy name="Folder Redirection Logging" class="Machine" displayName="$(string.FolderRedirLogging)" explainText="$(string.FolderRedirLogging_Help)" key="Software\Microsoft\Windows NT\CurrentVersion\Diagnostics" valueName="FDeployDebugLevel">
      <parentCategory ref="PolicyLogging" />
      <supportedOn ref="windows:SUPPORTED_Win2K"/>
      <enabledValue>
        <decimal value="15"/>
      </enabledValue>
      <disabledValue>
        <decimal value="0" />
      </disabledValue>
    </policy>

Figure 3 自訂 ADM 檔案

CLASS MACHINE
  CATEGORY !!System
    CATEGORY !!GroupPolicy
    CATEGORY !!Logging
POLICY !!FolderRedir
EXPLAIN !!FolderRedir_HELP
KEYNAME "Software\Microsoft\Windows NT\CurrentVersion\Diagnostics"
VALUENAME "FDeployDebugLevel"
VALUEON NUMERIC 15
VALUEOFF NUMERIC 0
END POLICY ;FolderRedir
      END CATEGORY ;Logging
   END CATEGORY ;GroupPolicy
 END CATEGORY ;SYSTEM

從各方面來說,這個 ADMX 片段內容簡潔,比同系的 ADM 更容易理解。policy 元素會指定這個原則的用途 (資料夾重新導向記錄)。以 $(string. 開頭的屬性是對應之 ADML 字串元素的參考。key 和 valuename 屬性很明顯就是指定此原則影響的登錄機碼和值。parentCategory 元素則控制這個原則在 [群組原則編輯器系統管理範本] 階層中的位置。supportedOn 元素會指出要遵守這個原則的作業系統版本,最後,enabledvalue 和 disabledvalue 元素會指定當這個原則設定為 enabled 和 disabled 時,要在登錄中放入什麼值。

這是一個相當簡單的 on/off 原則。與 ADM 語法一樣,使用 [群組原則編輯器] 就可以建立更複雜的 UI 元素。但在 ADMX 內,語法較為複雜,且需要一個 presentation 屬性來參考部分 ADML 檔案,亦即 UI 元素的 text 標籤部分。除此之外,ADMX 語法實際上沒有複雜多少。另外請注意,從 ADM 到 ADMX,有一些標記名稱也已變更。例如,在 ADM 語法中,您可以使用 "edittext" 和 "listbox" 標記。但在 ADMX 語法中,您會發現這些標記在 ADMX 檔案中變成 "text" 和 "list"。這些元素在 ADML 檔案中有對應的項目來指定伴隨出現的文字。

您可能已經知道,系統管理員可以將自訂 (舊版) ADM 檔案載入 [Windows Vista 群組原則物件編輯器] 中。人們常問我說 Microsoft 會不會提供可將自訂 ADM 檔案轉換成 ADMX 語法的公用程式。實際上,Microsoft 已經與 FullArmor Corp. 合作發佈一個免費工具,稱為 ADMX Migrator。這個工具有兩項功能。第一是可將舊的自訂 ADM 檔案轉換成 ADMX 格式 (請參閱 [圖 5],其中顯示使用此工具來轉換我自訂之 gpolog.adm 的範例)。

圖 5 ADMX Migrator

圖 5** ADMX Migrator **(按影像可放大)

第二是提供一個 ADMX 編輯器,讓您可從頭開始建立新的 ADMX 檔案。您可以從 go.microsoft.com/fwlink/?LinkID=77409 下載這個工具。

ADMX 的儲存

另外一項我想討論的變更,是 ADMX 和 ADML 檔案如何儲存才能使用。在 Windows Vista 之前的 Windows 版本中,當您編輯新的 GPO 時,ADM 檔案會從您原先執行編輯工作的本機工作站,自動複製到 Active Directory 網域內的網域控制站上,並放入 GPO 的 SYSVOL 部分。隨後,這些 ADM 便會複寫到網域中的每一個 DC,供每一個已建立的 GPO 使用。這浪費許多網路頻寬和磁碟儲存體,尤其在有數百個 GPO 的大型環境中更是如此。Windows Vista 完全顛覆這個過程。根據預設,當您從 Windows Vista 工作站建立 Active Directory GPO 時,在 [群組原則編輯器] 中出現的 [系統管理範本] 原則,會從您原先編輯 GPO 的電腦上的 c:\windows\policydefinitions 資料夾載入。

ADMX 和 ADML 檔案將不會複製到 SYSVOL - 只是在本機參考。這樣就去除 ADM 在群組原則環境上造成的儲存體和網路負擔。好戲還在後頭。Windows Vista 也支援中央存放區,也就是系統管理範本的存放庫。不論是誰編輯 GPO,這樣就能有效地控制用來編輯 GPO 的 ADMX 檔案。做法是將所有官方的 ADMX 和 ADML 檔案 (以及您建立的任何自訂檔案) 複製到網路位置上,使後來從 Windows Vista 工作站編輯群組原則時,都會參考網路上的版本,不會再參考個別本機上的版本。設定中央存放區很簡單,每一個網域只要設定一次。只要照著「建立中央存放區」資訊看板中的步驟來進行即可。

總結

相較於舊版 OS 使用的 ADM 檔案,Windows Vista 新增的 ADMX 格式實為一大進步。使用 XML 就能夠以更清楚的架構來編輯和搜尋這些檔案。將特定語言的字串移至獨立的檔案之後,編輯多語言的群組原則易如反掌,中央存放區也讓您不必再用許多份 ADM 檔案來儲存和更新所有 GPO。一切都證明學習 ADMX 是一項明智之舉。

建立中央存放區

中央存放區的建立方式非常簡單。只要遵循下列簡單步驟,即可在 Active Directory 網域中建立一個中央存放區:

步驟 1: 開啟檔案總管,巡覽至您環境中的 PDC 模擬器 DC 上的 [SYSVOL] 共用 (您可以使用任何 DC,但 PDC 角色擁有者通常是群組原則變更的焦點)。

步驟 2: 展開 [SYSVOL] 下的 [Policies] 資料夾,建立一個新的資料夾,並命名為「PolicyDefinitions」。

步驟 3: 將 Windows Vista 工作站的 C:\windows\policydefinitions 資料夾內容複製到新的 [PolicyDefinitions] 資料夾中,包括特定語言的 ADML 資料夾 (例如,英文電腦上的 [en-us])。

當 ADMX 和 ADML 檔案複製到中央存放區資料夾之後,Windows Vista 的群組原則物件編輯器就會開始參考那裡的檔案,不會再參考本機儲存的檔案了!

Darren Mar-Elia 是一位 Microsoft 群組原則 MVP,也是知名群組原則網站—www.gpoguy.com 的打造者和 Microsoft Windows Group Policy Guide (Microsoft Press,2005) 的作者之一。他同時也是 SDM Software, Inc. 的技術長和創始人。請透過 Darren@gpoguy.com 與他連絡。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.