Last night I coded a project in C#. Its function is to list all printers that connect to a PC and make the default printer print. Print documents are images. I've
never worked in that kind of work so I Googled and got some tuts. The tuts said: "Honey, just create a
PrintDocument object, the freshly-created one contains a list and
the first element is the default printer." I believe them, I did as they told without testing and delivered to my customer. Bullsh!t, it
was not entirely not right.
I had to go back to the traditional way, access the system and read some info blah blah. You should know that I wrote a small e-book about WMI, surely I used this tool. The WMI code to get the name of
the default printer in Windows OS is shown here:
public string GetDefaultPrinterName()
var query = new ObjectQuery("SELECT * FROM Win32_Printer");
var searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject mo in searcher.Get())
if (((bool?)mo["Default"]) ?? false)
return mo["Name"] as string;
My mate Bình Minh said that, sometimes she read her old source code, still understand it but she doesn't really know why she could write these.
I am writing this blog post to prevent this situation :)) Have fun.