Mark Minasi's Windows Networking Tech Page
Issue #49 August 2005

To subscribe, visit To unsubscribe, link to To change e-mail address, switch between HTML or text format, etc., link to  Visit the Archives at  Please do NOT reply to this mail; for comments, please link to  Document copyright 2005 Mark Minasi.

What's Inside

  • News
    • New CD Set At a Great Price
    • The Security Class is Now Two Days
    • Active Directory and Security Classes in DC This November
    • Join Us At the Forum!
  • Tech Section
    • Can't Get Setup To Format Your Disk?  Use Recovery Console
    • Auditusr.exe:  Fine-Tuned Security Logs
    • Using Security Templates?  Use /generaterollback
  • Conferences
  • Bring a Seminar to Your Site


This month brings two articles on little-known but very useful tools built right in to XP and Server 2003, and a tip on how to partition and format a new system's hard disk without having to install an operating system.  If you've ever turned on security auditing but gave it up when you saw how huge the security logs were then you'll love auditusr.exe, and if you've ever wanted to apply a security template, but were a little queasy about not being able to un-do the template if it broke something then you'll really like 2003's /generaterollback feature; I cover them both this month.  But first, a word from our sponsor...

New CD Set At a Great Price

I try to keep the marketing stuff to a minimum but I've got a lot to tell you -- it's amazing how much work gets done when I can get off the road for a while! -- so I'll keep each of these items short.  First, you may know that I do a huge (93-slide) presentation on the built-in SMTP server that's in NT 4, Server 2000, XP and 2003.  The documentation on it is woefully scanty and it is absolutely essential that anyone doing anything e-mail-wise know about this neat tool, as every Exchange server uses it and you can also use it as a backup e-mail receiver, a kind of e-mail firewall for your Exchange servers, and, well, lots of other stuff.  Now that talk's on two CDs and I want everyone to own a copy, so I've priced it at $29.95.  Find out more at

The Security Class is Now Two Days

The Security class has been busting out of its one-day time frame so I finally got the chance to crank it up to two days.  It's coming to DC in November or I can bring it to you.  The new outline is at

Active Directory and Security Classes in DC This November

I'm trying to stay off the road so I can start working on Server R2 and Vista books, but a fair number of folks have kindly asked for another seminar... so here goes.  The only public seminar I will do for the rest of the year will be in Washington, DC at the Marriott near George Washington University this November 14-17.  I'll be running the Active Directory class and the Security class.  The Security class outline is at, the Active Directory class outline is at, and you can find the seminar registration page at

Join Us At the Forum!

In case you've never visited, I host an on-line technical forum at  We just celebrated our third birthday -- come on by and visit.  A whole bunch of really smart and helpful people hang out there.  Come on by with a question or, better, come answer someone else's question and be a hero to some needy soul!

Tech Section

Can't Get Setup To Format Your Disk?  Use Recovery Console

When I tried to install the recent beta of Windows Vista in a virtual machine, I found that I couldn't convince Vista's setup routine to partition and format the virtual machine's disk.  Hey, it's Beta 1, and besides I was installing it in a VM, so no wonder, right?  Apparently to get Vista to install in a VMWare VM, you've got to install it on an already-formatted disk.

So how to do that?  I almost installed XP in the VM just so I'd have a disk formatted, but that'd take a serious amount of time.  But then I remembered Recovery Console.

I don't know why it is, but I've run across a few hard disks that 2000 or XP's Setup routines can't re-partition and format.  The textual portion of Setup looks like it's working, but just when it looks about finished formatting, you get an error saying that the disk isn't suitable for XP.  In each case, however, I've been able to get XP on that disk with only a little extra work.  The trick?  Just boot the XP install disk and start up Recovery Console.  You then have the commands DISKPART and FORMAT to partition the disk and format it.  Works great for troublesome XP installs, and it solved my Vista problem as well.

Auditusr.exe:  Fine-Tuned Security Logs

We all know that we should adjust the Audit Policy section of our group policies' Windows Settings / Local Policies / Audit Policy component, and to look at our Security event logs regularly, right?  Okay, how many of you do it?  C'mon, now, tell the truth... many of us don't bother with either audit policy settings or Security log because there's so much darn stuff in the Security log.  For example, I like having the wealth of information that I get from auditing both success and failure in logon and account logon events, but finding useful stuff by looking through the logs even on a small network like mine is often about as easy as finding an honest politician.  I don't really care if and when Janie or Johnny logged on; I want to see when someone's tried to log on as Administrator, or perhaps as one of those worrisome service accounts.  But turning on auditing of success and failure in group policies offers no fine-tuning: either the fire hose is on, or it's off.

So it's deluge or drought ... unless you're running XP Service Pack 2 and 2003 Service Pack 1, that is.  Because they include a command-line utility called auditusr.exe that lets you pick and choose what to audit on a per-user basis.

Auditusr Overview

Auditusr lets you turn on security auditing for just some small set of accounts or, inversely, it allows you to audit everything except some small set of accounts.  Basically, here's how it works.

  • To only audit a small set of accounts, then leave auditing turned off in group policies, but then use auditusr to tell your system to audit particular user accounts (not groups, unfortunately). 
  • To audit everyone except for some small set of accounts, then turn on auditing in group policies, which would normally audit every user account, and then use auditusr to exempt particular user accounts.

It's a pretty neat tool and I'm already finding uses for it.  But before we get too excited about auditusr, let's understand its limitations.

  • This only works on XP SP2 and 2003 SP1 or later; you can't make it work on earlier OSes.
  • As I mentioned before, it only works on user accounts, not user groups.  (Ever noticed that more and more things in the Windows world don't support groups, like quotas?  Seems like a bad trend, y'know?)  On the plus side, however, it can track machine accounts.
  • As far as I can see, there is no easy way to deploy this across an enterprise short of login batch scripts.
  • If you opt to enable auditing in group policies and then exclude particular accounts, you cannot exclude the Administrator account.

Auditusr Syntax

That's not so bad a set of limitations.  Here's the syntax for auditusr:

auditusr function accountname:what-to-audit


  • function is what you want audituser to do: audit successes regardless of the group policy auditing settings, audit failures regardless of group policies,  not audit successes regardless of group policies, to audit failures regardless of group policy, to import or export per-user settings, or to remove per-user settings.  We'll auditusr's functions in detail a bit later.
  • accountname is, not surprisingly, an account name (computer or user).  It'll take simple names like "Jane" if they are local accounts, or names like mydomain\Joe if you need to specify where Joe's account is, or Active Directory logon names like 
  • what-to-audit is one or more of the familiar auditable things -- system events, logons, policy change, etc.

Auditusr supports eight functions:

  • /is: audit a success for a particular account even if it’s generally disabled in GPOs.  For example, to say that I want the account mydomain\mark's logon successes audited whether the GPO setting turns on logon auditing or not, I'd type
auditusr /is "mydomain\mark":"Logon/Logoff"

And I'll tell you what works besides "Logon/Logoff" in a bit.

  • /if does the same thing as /is, but for auditing failures -- /if says to audit a failure for a particular account even if it’s generally disabled in GPOs -- /is and /if are, then, "include successes" and "include failures"
  • /es: do not audit a success for a particular account even if it’s generally enabled in GPOs.  So, for example, if I had my GPO settings arranged so that I was tracking account management success but didn't care about any account management referring to a local account "Mary" then I would type
auditusr /es mary:"Account Management"

Notice that I did not have to surround Mary's name with quotes, as it didn't contain any spaces, backslashes or the like.

  • /ef: do not audit a failure for a particular account even if it’s generally enabled in GPOs -- /es and /ef are "exclude successes" and "exclude failures."
  • /e filename exports all per-user auditing settings so that you can then use...
  • /i filename imports per-user settings.  This first wipes out any existing per-user auditing setting.  The export/import files are simple ASCII, so I guess that one way to spread per-user settings would be through an auditusr /i command in a login batch file, although that'd be a bit clumsy to set up.
  • /r accountname removes all per-user audit settings that refer to a given account
  • /r removes all per-user audit settings
  • And I should mention that specifying no function causes auditusr to just display every per-user audit setting on the system.

What can you audit?  The same as you see in the Audit Policy folder of group policies:

  • System Event
  • Logon/Logoff
  • Object Access
  • Privilege Use
  • Detailed Tracking
  • Policy Change
  • Account Management
  • Directory Service Access
  • Account Logon

You've got to type those audit targets exactly as you see them above and surround them with double quotes, although the case doesn't matter. 

Auditusr Example Applications

Let's take auditusr out for a spin to see how it works.  We've already seen a couple of simple examples; let's look at few more complete ones. 

Audit Just One User

Suppose I want to audit logons and logoffs as well as account logons for a user named Mark; let's also suppose that his account is a local account on a machine named X1000.  I'd like to audit logon successes and failures for Mark, even if we've got logon/logoff and account logons disabled in general via group policies.  Breaking this down, then, we want to do four things:

  • Audit logon/logoff successes for x1000\mark
  • Audit logon/logoff failures for x100\mark
  • Audit account logon successes for x1000\mark
  • Audit account logon failures for x1000\mark

We can accomplish this with four separate commands.  The first one looks like

auditusr /is "x1000\mark":"logon/logoff"

Note the "/is" option, which says "audit successes even if the group policy settings says not to bother.  Note also that I've typed Mark's account as "x1000\mark."  Let's assume, however, that I'm typing these auditusr commands right on the X1000 system, so from this point on I'll skip the "x1000\" prefix.  Next, there's the command to audit logon/logoff failures for Mark even if group policies says not to bother with auditing logon/logoff failures.  That looks like

auditusr /if mark:"logon/logoff"

Notice that the only difference is that the "/is" -- "include successes" -- option becomes "/if," or "include failures."  To finish, we just create the same commands again, substituting "account logon" for "logon/logoff:"

auditusr /is mark:"account logon"
auditusr /if mark:"account logon"

But actually we needn't have typed four lines; auditusr lets you stack up more than one area to audit.  So we could have alternatively typed just two commands:

auditusr /is mark:"account logon","logon/logoff"
auditusr /if mark:"account logon","logon/logoff"
See Your System's Current Per-User Audits

That all seemed good, but auditusr's idea of feedback is not to produce any output at all when things are fine.  On the one hand I appreciate its close-lipped nature, as I often find garrulous applications annoying, but on the other hand there's often what might be called a Cool Hand Luke aspect to computing... "what we here is a failure to communicate."  (In case you've never seen the movie, the line is most effective when spoken in a slow, intimidating, obnoxious drawl.)  So it's always nice when you can ask a computer, "what do you think we just did?"  We can do that with auditusr by just typing "auditusr" without any options.  That'll spit back all of the per-user auditing options that it knows of, like so:

Auditusr 1.0
X1000\Mark:include:success:Logon/Logoff,Account Logon
X1000\Mark:include:failure:Logon/Logoff,Account Logon

Notice that auditusr already knew about that "put more than one thing to audit on the same line" thing.  Unfortunately, that's all that we can do to reduce our work with auditusr -- we can't put, for example, "/is /if" on the same line, nor can we stack up a lot of user accounts on one line.  (Which makes the fact that you can't use this with groups even more annoying.)

Export Per-User Settings

Now suppose I'm decommissioning this system because I've got a new computer, but like my per-user settings.  Here's how to export them to an ASCII file for easy importing to the new system.

First, run auditusr with the /e option followed by the name of a file to export the per-user settings to:

auditusr /e c:\pesettings.txt

Once that runs, take a look at the file and you'll see that it's formatted identically to the output that we got from just typing "auditusr" all by itself.  Copy the file to the new system and import the settings like so:

auditusr /i c:\pesettings.txt

You can then erase the pesettings.txt file.

Remove All User-Specific Settings

Finally, suppose you want to remove all per-user auditing settings?  That's easily done with just one line:

auditusr /r

Typing "auditusr" all by itself will show that there aren't any per-user settings now.

While auditusr isn't an earth-shattering addition to Windows, it fulfills a need that I've seen for a long time, and it's a welcome addition.  My thanks to Roger Grimes, who pointed this SP2/SP1 tool out to me.

Using Security Templates?  Use /generaterollback

If you use security templates -- and if you don't then you should look into them, they're useful -- then you may not know that Server 2003 handles security templates in a slightly different fashion than did 2000 and even XP.  2003 adds a welcome "generate rollback" option.  But I've read quite a bit of misinformation about this option on the Internet, so let's quickly look at what a rollback does.

Security templates are ASCII files that can be applied to Windows 2000, XP or 2003 systems to adjust security-related things.  In fact, security templates let you affect almost everything in the Computer part of the "Security Settings" folder in group policies.  With a security template, you can do things like change NTFS permissions on a system, modify its Registry permissions, control password and audit policies, control who's in a given local group, monkey with the Security Options folder -- the thing that controls null sessions, SMB signing and tons of other things.  Templates can't do everything that a group policy object can, but templates have the virtue of (1) working on a system that's not a member of a domain and (2) not requiring a network connection; some folks like to lock down their security a bit before they ever even plug an Ethernet cable into the back of their systems.

But applying a security template is like applying a security patch:  while it usually makes things more secure, there's a chance that it'll break things.  2003's secedit.exe program contains a "/generaterollback" option which allows you to prepare for applying a given security template by first creating another template, a kind of "anti-template" which, if applied, will un-do almost everything that the template does.  (I'll explain what "almost" means in a minute.)  To use the "/generaterollback" option, then, you'd

  1. First create or acquire a template intended to accomplish something; let's call that "template A."
  2. Use secedit /generaterollback to create an anti-template for "template A;" let's call it "template B."
  3. Apply template A, the original template.
  4. If all's well, then there's nothing else to do.  But if the effects of template A aren't what you wanted, then apply template B, and your system will be almost exactly as it was before you applied template A.

That's the overview; here are the details.

How to Create a Rollback Template

You apply security templates to 2000, XP or 2003 with the "secedit" command-line tool. As I said before, with Server 2003 secedit got a new option, "/generaterollback."  Its syntax looks like

secedit /generaterollback /cfg originaltemplate /rbk rollbacktemplatename

You can also optionally get secedit to log the process by adding "/log logfilename" and you can reduce the amount of chatter that secedit emits with the "/quiet" option.

Rollback Limitations

There are two thingx that rollback templates cannot do, for some reason.  Like the rollback feature of the Security Configuration Wizard, they can roll back everything except for NTFS permissions and Registry permissions.  Could you work around this?  Sure.  Subinacl, a neat tool that you can find at, can record the entirety of permissions on an NTFS volume or, I'd imagine (I've not tried it) a Registry key.  You could record those permissions and stash them away somewhere and, if you needed to roll them back, then subinacl will "play back" permissions that it has stored.  But it's still a pain that /generaterollback can't handle this for you.

How a Rollback Template Works

At first glance, you'd think that building a rollback template would be pretty easy.  If the original template turned on the need for complex passwords, then the anti-template would just turn 'em off, right?  Sure, as the reverse of "enable complex passwords" is "disable complex passwords."  Well, that's right, but what about settings that aren't on/off settings?  Or what about cases where the template flips an on/off switch to "on," even though it's already on.  Or suppose the original template said "set the maximum life of a password to 100 days."  What's the anti-template going to do?  What's the opposite of 100 days?  Of course, there isn't an opposite.  That leads to an important point:

Secedit can't create a rollback password out of thin air.  It can't follow the command "here's a template, create an anti-template."  Instead, it needs a context.  It needs to be told, "here's a template; please create me an anti-template for such-and-such system."  Thus, anti-templates are dependent not only on the original template, but also on the system that the template's about to be applied to.  For example, what's the correct anti-template value for the "set password max age to 100 days?"  Well, if you create an anti-template for that setting on a system that currently has a maximum password age of 70 days, then the anti-template will set the maximum password age to 70 days, which was the default out-of-the box value.

Try It Out

If you've got a Server 2003 system around and want to try it, here's a short exercise.  This will work best if the system is not under the sway of group policies, so a machine who's not a member of a domain would be best.

Start off by creating a template.  Using the Security Templates MMC snap-in, create a security template named "test.inf."  (Chapters 8 and 9 in the Mastering Windows 2003 Server book talk about creating templates.  Failing that, it's all GUI-driven so it's not hard to figure out.)  Give it the following settings:

  • Set the maximum password age to 100 days, and the minimum password age to 30 days.
  • Disable the Smart Card Service.
  • In Computer Configuration / Windows Settings / Local Policies / Security Options, set "network network client: digitally sign communications (if server agrees)" to "Enabled."
  • In the Restricted Groups section, create a policy for the Power Users group that allows only the local Administrator account in Power Users.

Security templates are, of course, just ASCII files.  Look at your new security template (which is in c:\windows\security\templates\test.inf) in Notepad and it'll look like this:

[System Access]
MinimumPasswordAge = 30
MaximumPasswordAge = 100
[Registry Values]
[Group Membership]
*S-1-5-32-547__Memberof =
*S-1-5-32-547__Members = *S-1-5-32-544
[Service General Setting]

(I broke one of the long lines in the output to make it more readable.)  A look at this lets us guess what's going on.  The password stuff is self-explanatory, and the Registry value is the command that implements our "Microsoft Network Client" policy.  The [Group Membership] section cleans out Power Users and adds Administrator, and I'm guessing that setting a service to 4 disables it, as that'd be its corresponding value in its key under HKLM\SYSTEM\CurrentControlSet\Services.  (Its default value is Manual.)

Now let's create a rollback template.  Type

C:\>secedit /generaterollback /cfg c:\windows\security\templates\test.inf 
/rbk c:\windows\security\templates\rollback.inf /quiet

I've broken the line for readability's sake -- you'd type it as one long line.  A look with Notepad at the rollback template at c:\windows\security\templates\rollback.inf and

[System Access]
MinimumPasswordAge = 0
MaximumPasswordAge = 42
[Registry Values]
[Group Membership]
*S-1-5-32-547__Memberof =
*S-1-5-32-547__Members =
[Service General Setting]

The changes to the password policy are, again, easy to see.  Notice that the Registry setting for Microsoft Network Client are the same as the original template -- that was a trick setting on my part.  You see, I told the template to enable the setting -- but it's enabled by default!  So in this case, setting something to "enabled" causes its corresponding rollback entry to also be "enabled."  The group membership setup looks like the original template's, except notice that there is nothing to the right of "...Members =;" that's because there was no one in the Power Users group before we applied the original template.  The rollback, then, just restored things to the pre-template state.  Finally, the Smart Card Service returns to "3," which is Registry-ese for "manual setting."

Now and then I come across an interesting-looking security template, but put it aside rather than try it out because I don't want to run the risk of breaking something.  But secedit's /generaterollback makes me much more likely to try out new security tweaks... and that makes for more secure systems.  Give it a shot sometime soon!


Join me at ...

TechTarget's Web Class on SP2 and SP1.  As they say it...

"Windows School is in session with Mark Minasi Mark Minasi dissects Windows XP SP2 and Windows Server 2003 SP1 in five, 15-minute webcast cram sessions. You can even download a worksheet to follow along with the lesson you're hearing. Find out the good and bad about XP SP2 and Windows 2003 SP1 in Mark's inimitable style. Topics cover: Data execution protection, stack changes, de-anonymizing XP, IE and more.",295582,sid1_gci1084934,00.html?offer=minasi

TechMentor Fall 2005 (San Jose):  101 Communication's semi-annual geekfest returns to San Jose this October 17-21.  Follow for more info as it appears.

Windows Connections Fall 2005 (San Diego):   I'm not sure how California managed to snag three of the four best IT shows this year (Spring Connections in San Francisco, TechMentor in San Jose, Fall Connections in San Diego) but if you're a fan of the Golden State's weather then 2005's the conference-going year for you!  Information on Connections at  Our program chair Amy Eisenberg's trying to out-do herself so it'll be a great show.  I'm doing my SMTP talk, the MSDE talk based on my earlier newsletter, how to fix broken Active Directories, and more.

Bring Mark to your site to teach

I'm keeping busy doing Active Directory and Security seminars and writing, but I've still got time to visit your firm.  In just two days, I'll make your current NT techies into 2000, XP, Active Directory and 2003 experts.  (And better yet they won't have to sit through any Redmondian propaganda.)  To join the large educational, pharmaceutical, agricultural, aerospace, utility, banking, government, telecommunication, law enforcement, publishing, transportation, and other organizations that I've assisted, either take a peek at the course outlines at, mail our assistant Jean Snead at, or call her at (757) 426-1431 (only between noon-5 Eastern time, weekdays, please).

Until Next Month...

Have a quiet and safe month. 

Please share this newsletter; I'd like very much to expand this periodical into a useful source of NT/2000/2003/XP information.  Please forward it to any associates who might find it helpful, and accept my thanks.  We are now at over 40,000 subscribers and I hope to use this to get information to every single Mastering 2003, XP, NT and 2000 Server reader. Thanks for letting me visit with you, and take care.  Many, many thanks to the readers who have mailed me to offer suggestions, errata, and those kind reviews.  As always, I'm at and please join us at the Forum with technical questions at

To subscribe, visit To change e-mail, format, etc., link to  To unsubscribe, link to Visit the Archives at Please do NOT reply to this mail; for comments, please link to

All contents copyright 2005 Mark Minasi. You are encouraged to quote this material, SO LONG as you include this entire document; thanks.