2013-05-17 4 views
1

Я хотел бы получить размер страницы по умолчанию для всех оконных устройств принтера на сервере Windows (2003 в этом случае).Перечислить значение по умолчанию Размер страницы для устройств принтера Windows

Это должно быть не свойство DefaultPageSize на объекте WMI Win32_Printer, а то, которое задано с помощью драйвера принтера.

Драйвер принтера является драйвером Adobe Generic PostScript.

ответ

0

Конфигурация принтера обеспечивается драйвером печати находится в реестре в

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\<printer name>\ 

Это не кажутся такими же, как и текущие по умолчанию Размер бумаги свойств объекта Win32_Printer WMI.

Свойство «Default DevMode» является двоичным представлением ряда настроек для устройства. Откройте свойство в окне изменения, чтобы увидеть представление ascii.

Чтобы извлечь это поле я использовал следующее:

Get-ItemProperty -path Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\* | ForEach-Object{ $_.name, [string]::Join($null, ($_."Default DevMode" | %{ [char][int]$_;})) } > .\printer_driver_properties.txt 

Значение по умолчанию DevMode свойство преобразуется в массив символов, который затем преобразуется в строку.

Открыть полученный файл в редакторе, поддерживающем кодировку, например, notepad.exe. По моему опыту это были юникодные двухбайтовые символы.

Для каждого принтера должен быть ряд свойств, в том числе:

  • Название
  • Разрешение
  • PageSize
  • PageRegion
  • InputSlot

Примечание: Это было быстро взломать эту информацию. Если есть более правильный способ сделать это, или вы хотите предложить что-то другое, чтобы привести его в порядок, я был бы очень благодарен.

Кроме того, если в этой области реестра есть ресурс или спецификация, пожалуйста, дайте мне знать!