Using admx.exe to parse Group Policy .adm files


The Windows Server 2003 Resource Kit Tools contains a utility called ADM File Parser, aka admx.msi. 

According to Microsoft,

“(AdmX) is a command-line tool that enables an administrator to export Group Policy settings to a tab-delimited text file. The administrator can then use the text produced by ADM File Parser (AdmX) to find changes for the policy settings between different versions of the operating systems.”

and

“The AdmX.exe tool runs on Windows 2000, Windows Server 2003, and Windows XP Professional. AdmX.exe also requires the Microsoft .NET Framework 1.0.”

My Windows XP SP2 machine already had the .NET framework 2.0 installed, so I figured installation would be no problem.  I was wrong.

I installed the Windows Server 2003 Resource Kit Tools to their default location of C:\Program Files\Windows Resource Kits\Tools and then ran C:\Program Files\Windows Resource Kits\Tools\admx.msi to start the ADMx installer and received the following message:

To run this application, you must first install one of the following versions of the .NET Framework:

v1.0.5000

v1.0.3705

Contact your application publisher for instructions about obtaining the appropriate version of the .NET Framework.

I was majorly bummed, since my administrative machine was running perfectly and the last thing I wanted was to mess it up by installing some archaic version of the .NET framework that was released back in 2003.  I was desperate for a workaround.

The GPOGUY suggested using ORCA to remove the .NET version dependency check for a similar situation, but I didn’t have much luck in the ten minutes I tried to figure out where the dependency was at (btw, if anyone can help here, I’d love to know how to do it).

My next approach was to try to fool admx.msi into thinking .NET 1.0 was installed by modifying the registry.  KB 318785, How to determine which versions of the .NET Framework are installed and whether service packs have been applied showed that version 1.0.3705 was the original .NET 1.0 RTM revision. 

Next I checked out KB 315291, How to detect the installed version of the .NET Framework in a Visual Studio Setup and Deployment package, which showed the following registry keys were generally checked for determining the .NET version.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.0

I did not have the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.0 key, so I created it, then created a new string with a value name of 3705 with value data of 3321-3705 per KB 315291.

I was sure this method was going to work, so I started doing my Superior Dance prior to starting the admx.msi installation – only to see it fail once again, reporting it still needed .NET 1.0. 

Copying the C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705 directory from a Windows XP SP2 machine that did have .NET 1.0 installed to my administrative machine didn’t make a difference either.

I finally decided I spent long enough trying to fool the installer into thinking I had .NET 1.0 installed, so I finally downloaded and installed it.  It’s coexisted with .NET 2.0 just fine so far, I’m happy to report.

Incidently, once admx.msi installed I was able to parse the .adm settings to a tab delimited text file using the following syntax:

Syntax:  admX <admfilename> [/Output:<filename>] [/DIFF:<filename>] [/All] [/TIT
LE:<title text>]

Value                      Description

<admfilename>              Specifies path to .adm tempate file to be parsed.
                           ‘.adm’ extension must be included.
                           This is a required parameter.

/Output:<filename>         Specifies path to text file to write output info
                           If no output parameter,
                           text is written to the console.

/DIFF:<filename>           Performs a diff between the admfile and the
                           specified diff .adm filename filename.
                           ‘.adm’ extension must be included.

/ALL                       Prints all parsed information for the policy to
                           the console or the output file

/TITLE:<title text>         Adds the title text to output file.
                           Title text must be inside double quotes.

Here’s an example of the syntax I used to parse the system.adm file located at s:\zenworks\policies\media\adm\ and saved the data to media.txt with a title of “media system.adm” (type as all one line)

admx.exe s:\zenworks\policies\media\adm\system.adm /output:media.txt /Title:”media system.adm”

One Response to “Using admx.exe to parse Group Policy .adm files”

  1. Bob Free Says:

    I was having a problem with admx.exe AFTER it was installed complaining about not finding the required version of .NET. I checked and I indeed did have the version installed but it insisted on complaining, I tried a repair of the installation but the exe still complained. On a lark I decided to rename admX.exe.config that was in the same directory since it had the same versions of .NET called out that the program was complaining about. That did the trick and the exe would run afterwards. I thought I’d post it here since I found your entry searching for a solution to my problem.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: