Я полагаю, что это возможно через взаимодействие с собственными Win32 API, но я обнаружил, что намного проще использовать System.Diagnostics.Process () для вызова printui.dll через:
rundll32.exe printui.dll,PrintUIEntry /?
Возможно, вы уже используете это в упомянутом пакетном скрипте, но если нет, то параметры задокументированы здесь: Руководство пользователя PrintUI.DLL и справочник
Обязательно протестируйте его на всех операционных системах, которые вам необходимо поддерживать. Некоторые параметры либо отсутствуют во всех выпусках Windows, либо были переименованы (хотя я думаю, что они являются более эзотерическими вариантами - установка .INF, вероятно, будет работать по всем направлениям).