0 Replies - 199 Views - Last Post: 25 March 2010 - 10:22 PM

#1 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1659
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Use WMI to get a list of all installed printers

Posted 25 March 2010 - 10:22 PM

Description: Reference to Namespaces
System.Management
System.Collections.GenericSnippet to retrieve the names of all installed printers on a machine. Can easily be modified to get other information such as port, driver, shared name, etc)
/// <summary>
/// method to populate a generic list holding all the available printers on a network
/// </summary>
/// <returns></returns>
public List<string> GetInstalledPrinters()
{
    List<string> printerList = new List<string>();

    try
    {
        //set the scope of this search to the local machine
        ManagementScope scope = new ManagementScope(ManagementPath.DefaultPath);
        //connect to the machine
        scope.Connect();

        //build the SelectQuery to pull from Win32_Printer
        SelectQuery query = new SelectQuery("select * from Win32_Printer");

        ManagementClass m = new ManagementClass("Win32_Printer");

        ManagementObjectSearcher obj = new ManagementObjectSearcher(scope, query);

        //now loop through what is found and populate our Generic list with
        //the names of all installed printers on the local machine
        using (ManagementObjectCollection printers = m.GetInstances())
            foreach (ManagementObject printer in printers)
                printerList.Add(printer["Name"].ToString());

        printerList.Sort();

        return printerList;
    }
    catch (Exception ex)
    {
        return null;
    }

}


Is This A Good Question/Topic? 0
  • +

Page 1 of 1