Windows Vista driver management

In the Microsoft Deployment Toolkit (Lite Touch and Zero Touch for SMS 2003), as well as in ConfigMgr 2007, drivers are added just-in-time to a Windows Vista image as it is being deployed (after it is placed on the disk, but before it boots for the first time).  This is done using the PKGMGR.EXE utility or the underlying APIs to add new drivers into the Windows Vista driver store, a special directory structure (located in C:\WINDOWS\system32\DriverStore) that Windows Vista uses to hold both in-box drivers and "trusted" third-party drivers.

It's worth noting that after MDT injects the drivers into the driver store, it no longer needs the local copies in C:\Drivers; they will be cleaned up later in the process.

It's also possible to add drivers later, after Windows Vista is up and running (online), using PNPUTIL.EXE, a new utility for interacting with the driver store.  (Want to get really fancy?  You can even self-sign unsigned drivers.  See for the details.)

Let's say you just want to see what additional drivers have been added to the driver store.  That's pretty easy to do using PNPUTIL.EXE.  Just issue this command:


This will show a brief listing of all third-party drivers present in the driver store.  You can also delete third-party drivers (one at a time) using PNPUTIL.EXE -d, add drivers into the driver store with PNPUTIL.EXE -a, etc. 

There are some other driver management improvements in Windows Vista worth mentioning:

  • Windows Vista will recursively look through specified directory structures (e.g. those specified via OEMPnpDriversPath or the DevicePath registry setting), so it's no longer necessary to list each subdirectory containing drivers like you needed to do in Windows XP.

  • Windows Vista allows the specification of network UNC paths to locations containing drivers.  A few comments about that:

    • Assuming the machine is domain joined, Windows Vista will use the computer account to access that share, so make sure security is set appropriately.

    • Obviously this doesn't work for all types of drivers, e.g. network drivers needed to get to the UNC share.

    • Don't point to huge directory structures as device installation can then take a very long time as it searches through the entire directory structure (generating lots of network traffic as it processes each INF file it finds) looking for a matching driver.

    • Don't assume laptops will be on the corporate network - they may need the drivers when roaming, so plan accordingly (i.e. consider adding them to the driver store).

    • This is probably most useful for common peripheral drivers - devices that are not present when the OS is installed but could be inserted at any point in the future.

  • Windows Vista can automatically download drivers from the Windows Update website (at least once you have a network driver loaded).  This works well for many devices, as there are thousands of drivers available via this method.  (Want to search through them yourself?  Be sure to check out the website.)

Comments (4)
  1. No, this is actually possible for drivers delivered as an INF + files.  PKGMGR knows specifically how to deal with drivers.

    No one (outsie of Microsoft service packs at least) ships drivers as MSU files, and only Microsoft can create these.  (They need to be signed by the Microsoft build labs.)

  2. Anonymous says:

    Hi Michael,

    You talk about adding drivers when the OS is deployed (online) via PKGMGR. I assume this is only possible for drivers delivered as .msu?

  3. Anonymous says:

    So I am REALLY foggy on this…

    Basically, this is the first reference I have found that mentions

    "drivers are added just-in-time to a Windows Vista image as it is being deployed (after it is placed on the disk, but before it boots for the first time"

    This is exactly what I want to do, but all references I find to PkgMgr.exe keep talking about injecting drivers INTO the WIM file.   Is there clear cut steps on how to use pkgmgr to drop a specific set of drivers onto a host machine after I lay the image down to C: with ImageX, but prior to the first boot?

Comments are closed.

Skip to main content