Get Print Jobs using WMI and ManagmentObjects

I found a way to get the print jobs from the spoiler using Management objects and WMI

public static void GetPrintJobs()


    string searchQuery = "SELECT * FROM Win32_PrintJob";

    ManagementObjectSearcher searchPrintJobs = new ManagementObjectSearcher(searchQuery);

    ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();

    foreach (ManagementObject prntJob in prntJobCollection)




            string document = prntJob.Properties["Document"].Value.ToString();

            string color = prntJob.Properties["Color"].Value.ToString();

            string host = prntJob.Properties["HostPrintQueue"].Value.ToString();

            string owner = prntJob.Properties["Owner"].Value.ToString();

            int id = int.Parse(prntJob.Properties["JobId"].Value.ToString());

            int pages = int.Parse(prntJob.Properties["TotalPages"].Value.ToString());


            Console.WriteLine("{0} Document '{1}', pages {2} {3}, sent by {4}\\{5}", id, document, pages, color, host, owner);


        catch (Exception ex)


            Console.WriteLine("Exception getting print jobs: " + ex);




one note about this code, it'll only work in Vista/LHS, to make it work in win xp/2k3 just don't ask for the property Color which aparently does not exist in previous versions of Windows. 

you can find more information about the properties of the Win32_PrintJob class here

 and a little more about WMI which in my opinion is a great way to manage windows, but it is kind of slow

Skip to main content