Я выполняю запрос, используя функциональность Win32_BaseBoard (а также Win32_PhysicalMemory и Win32_Processor) для отчетов, помогающих отлаживать в моем приложении, что, кажется, работает нормально. Позже в моем коде я создаю System.Windows.Controls.PrintDialog для запуска создания экземпляров своих принтеров, но когда я вызываю ShowDialog (), он не разрешается, а скорее сообщает, что мне нужно: «Прежде чем вы сможете печатать, вам нужно выбрать принтер. Если вам нужно установить принтер, ... "диалог ошибки печати.
После этого единственные принтеры, на которые я могу печатать, - это Microsoft Print to PDF и / или Microsoft XPS Document Writer.
Если я остановлю запросы Win32_XXX, то PrintDialog будет отображаться правильно, и все будет работать как задумано, включая печать на любом из доступных мне принтеров.
WMIConnection wmiConnection = new WMIConnection();
Win32_Processor processor = new Win32_Processor(wmiConnection);
IList<string> items = processor.GetPropertyValues();
Это работает, и я получаю предметы. Тем не менее, теперь, если я запустите это:
PrintDialog print = new PrintDialog();
print.ShowDialog();
Он не создает экземпляр диалогового окна печати должным образом, но отражает диалоговое окно «Прежде чем вы сможете печатать» в верхней части показанного PrintDialog.
Полагаю, мой вопрос в том, есть ли способ получить информацию о процессоре без использования маршрута wmiConnection?