Получить имя дефолтного принтера можно проще: GetDefaultPrinter.
В моем случае печатают несколько потоков программы, которые не интерактивны, занимаются своим делом. Иногда им надо получить изображение отчетов, чтобы потом отослать по факсу. Ясно, что печатать они могут и одновременно. А принтер всегда нужен мой — виртуальный. Требовать сделать его принтером по умолчанию — не практично! Устанавливать его таким временно — криво, особенно в моем случае. Потоки передеруться, да и процедура эта не из простых, нашлась статейка в MSDNе.