Install printerdrivers with WMI and VB.NET
This is an example of how you install printerdrivers with .NET and WMI (Windows Management Instrumentation). Most examples on the Internet shows how this can be done with vbscript, printui.dll and such…
A list of properties can be found at MSDN Win32_PrinterDriver
Other topics:
How to install printerports with WMI and VB.NET
How to create a printerqueu with .NET and WMI
Imports System.Management
Dim infPath as String = "c:\driver\printerdriver.inf"
Dim mp As ManagementPath = New ManagementPath("Win32_PrinterDriver")
Dim co As ConnectionOptions = New ConnectionOptions()
co.EnablePrivileges = True
Dim ms As ManagementScope = New ManagementScope("\\" + Environment.MachineName + "\root\cimv2", co)
Dim mcPrinterDriver As New ManagementClass(ms, mp, Nothing)
mcPrinterDriver.SetPropertyValue("Name", "drivername")
mcPrinterDriver.SetPropertyValue("SupportedPlatform", "Windows NT x86") ' x86-architecture
'mcPrinterDriver.SetPropertyValue("SupportedPlatform", "Windows x64") ' x64-architecture
mcPrinterDriver.SetPropertyValue("Version", 3)
mcPrinterDriver.SetPropertyValue("FilePath", System.IO.Path.GetDirectoryName(infPath))
mcPrinterDriver.SetPropertyValue("InfName", infPath)
Dim inParams As System.Management.ManagementBaseObject = Nothing
inParams = mcPrinterDriver.GetMethodParameters("AddPrinterDriver")
inParams("DriverInfo") = CType(mcPrinterDriver, System.Management.ManagementBaseObject)
Dim outParams As System.Management.ManagementBaseObject = mcPrinterDriver.InvokeMethod("AddPrinterDriver", inParams, Nothing)
Dim uiReturnValue As UInteger = System.Convert.ToUInt32(outParams.Properties("ReturnValue").Value)
I have tested this in Windows XP, Windows 7 and Windows 2008R2. Make sure your account has privileges to install drivers.
On Windows XP the drivers are installed physically to:
C:\WINNT\system32\spool\drivers
And in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments
2 Comments
How to create a printerqueu with .NET and WMI | Marcus Nyberg on januari 12th, 2010
[...] Other topics: How to install printerdrivers with wmi and VB.NET [...]

Install printerports with WMI and VB.NET | Marcus Nyberg on december 11th, 2009
[...] Other topics: How to install printerdrivers with wmi and VB.NET [...]