User Account Control: Smarter User Privileges

Most (I'm actually tempted to say the vast majority) of the security-related problems in recent versions of Windows boiled down to a single root cause: Most users were running Windows with administrator-level permissions.

Administrators can do anything to a Windows machine, including installing programs, adding devices, updating drivers, installing updates and patches, changing Registry settings, running administrative tools, and creating and modifying user accounts. This is convenient, but it leads to a huge problem: Any malware that insinuates itself onto your system will also be capable of operating with administrative permissions, thus enabling the program to wreak havoc on the computer and just about anything connected to it.

Windows XP tried to solve the problem by creating a second-tier account level called the limited user, which had only very basic permissions. Unfortunately, there were three gaping holes in this "solution":

  • XP prompted you to create one or more user accounts during setup, but it didn't force you to create one. If you skipped this part, XP started under the Administrator account.
  • Even if you elected to create users, the setup program didn't give you an option for setting the account security level. Therefore, any account you created during setup was automatically added to the Administrators group.
  • If you created a limited user account, you probably didn't keep it for long because XP hobbled the account so badly that you couldn't use it to do anything but the most basic computer tasks. You couldn't even install most programs because they generally require write permission for the %SystemRoot% folder and the Registry, and limited users lacked that permission.

Windows Vista tries once again to solve this problem. The new solution is called User Account Control and it uses a principle called the least-privileged user. The idea behind this is to create an account level that has no more permissions than it requires. Again, such accounts are prevented from editing the Registry and performing other administrative tasks. However, these users can perform other day-to-day tasks:

  • Install programs and updates
  • Add printer drivers
  • Change wireless security options (such as adding a WEP or WPA key)

In Windows Vista, the least-privileged user concept arrives in the form of a new account type called the standard user. This means that Vista has three basic account levels:

  • Administrator account - This account can do anything to the computer.
  • Administrators group - Members of this group (except the Administrator account) run as standard users but are able to elevate their privileges when required just by clicking a button in a dialog box.
  • Standard users group - These are the least-privileged users, although they, too, can elevate their privileges when needed; however, they require access to an administrator password to do so.

Elevating Privileges

This idea of elevating privileges is at the heart of Vista's new security model. In Windows XP, you could use the Run As command to run a task as a different user (that is, one with higher privileges). In Vista, you usually don't need to do this because Vista prompts you for the elevation automatically.

If you're a member of the Administrators group, you run with the privileges of a standard user for extra security. When you attempt a task that requires administrative privileges, Vista prompts for your consent by displaying a User Account Control dialog box. Click Control to permit the task to proceed. If this dialog box appears unexpectedly, it's possible that a malware program is trying to perform some task that requires administrative privileges; you can thwart that task by clicking Cancel instead.

If you're running as a standard user and attempt a task that requires administrative privileges, Vista uses an extra level of protection. That is, instead of just prompting you for consent, it prompts you for the credentials of an administrator. If your system has multiple administrator accounts, each one is shown in this dialog box. Type the password for any administrator account shown, and then click Submit. Again, if this dialog box shows up unexpectedly, it might be malware, so you should click Cancel to prevent the task from going through.

Note, too, that in both cases Windows Vista switches to secure desktop mode, which means you can't do anything else with Vista until you give your consent or credentials or cancel the operation. Vista indicates the secure desktop by darkening everything on the screen except the User Account Control dialog box.


User Account Control seems sensible on the surface, but Microsoft has not always implemented it in a sensible way. For example, sometimes you are prompted for elevation during simple tasks such as file deletions and renames, or when you change the system date or time. This has led to a backlash against User Account Control in some circles, and I'm sympathetic to a point (so is Microsoft, who has promised to tweak User Account Control before shipping the final Vista code).

However, all the people who are complaining about User Account Control are beta testers who, by definition, are tweaking settings, installing drivers and programs, and generally pushing Vista to its limits. Of course you're going to get hit with lots of UAC dialog boxes under those conditions. However, the average user really doesn't tweak their system all that often, so I think UAC will be much less of a problem than its critics suggest.

It's also possible to elevate your privileges for any individual program. You do this by right-clicking the program file or shortcut and then clicking Run as Administrator. This displays either the consent dialog box (if you're an administrator) or the credentials dialog box (if you're a standard user).


You might have older programs that simply won't run under Vista's User Account Control security model because they require administrative privileges. If you don't want to give a standard user an administrator's password, you can still enable the user to run the program. Find the program's executable file, right-click it, and then click Properties.

In the property sheet that appears, display the Compatibility tab, activate the Run This Program as an Administrator check box, and then click OK. (You can also do this with any shortcut to the executable. Vista assigns the elevated privilege to the executable and all its shortcuts.) Vista then runs a diagnostic test on the program to see the administrative privileges it requires. This is a security feature that ensures that the program gets only the minimum number of privileges that it requires to function properly.

File and Registry Virtualization

You might be wondering how secure Windows Vista really is if a standard user can install programs. Doesn't that mean that malware can install as well? NoVista implements a new model for installation security. In Vista, you need administrative privileges to write anything to the %SystemRoot% folder (usually C:\Windows), the %ProgramFiles% folder (usually C:\Program Files), and the Registry. Vista handles this for standard users in two ways:

  • During a program installation, Vista first prompts the user for credentials (that is, Vista displays one of the Windows Security dialog boxes. If they are provided, Vista gives permission to the program installer to write to %SystemRoot%, %ProgramFiles%, and the Registry.
  • If the user cannot provide credentials, Vista uses a technique called file and Registry virtualization, which creates virtual %SystemRoot% and %ProgramFiles% folders, and a virtual HKEY_LOCAL_MACHINE Registry key, all of which are stored with the user's files. This enables the installer to proceed without jeopardizing actual system files.

User Account Control Policies

You can customize User Account Control to a certain extent by using group policies. In the Local Security Settings snap-in (press Windows Logo+R, type secpol.msc, and click OK), open the Security Settings, Local Policies, Security Options branch. Here you'll find six policies related to User Account Control:

  • User Account Control: Admin Approval Mode for the Built-In Administrator Account This policy controls whether the Administrator account falls under User Account Control. If you enable this policy, the Administrator account is treated like any other account in the Administrators group and you must click Continue in the consent dialog box when Windows Vista requires approval for an action.
  • User Account Control: Behavior of the Elevation Prompt for Administrators in Admin Approval Mode This policy controls the prompt that appears when an administrator requires elevated privileges. The default setting is Prompt for Consent, where the user clicks either Continue or Cancel. You can also choose Prompt for Credentials to force the user to type his or her password. If you choose No Prompt, administrators cannot elevate their privileges.
  • User Account Control: Behavior of the Elevation Prompt for Standard Users This policy controls the prompt that appears when a standard user requires elevated privileges. The default setting is Prompt for Credentials, to force the user to type an administrator password. You can also choose No Prompt to prevent standard users from elevating their privileges.
  • User Account Control: Delete Application Installs and Prompt for Elevation Use this policy to enable or disable automatic privilege elevation while installing programs.
  • User Account Control: Run All Administrators in Admin Approval Mode Users Use this policy to enable or disable running administrators (excluding the Administrator account) as standard users.
  • User Account Control: Only Elevate Executables That Are Signed and Validated Use this policy to enable or disable whether Vista checks the security signature of any program that asks for elevated privileges.
  • User Account Control: Switch to the Secure Desktop When Prompting for Elevation Use this policy to enable or disable whether Vista switches to the secure desktop when the elevation prompts appear.
  • User Account Control: Virtualize File and Registry Write Failures to Per-User Locations Use this policy to enable or disable file and Registry virtualization for standard users.