1

Windows サーバー (この例では 2003) 上のすべての Windows プリンター デバイスの既定のページ サイズを取得できるようにしたいと考えています。

これは、Win32_Printer WMI オブジェクトの DefaultPageSize プロパティではなく、プリンター ドライバーによって設定されたものである必要があります。

プリンタ ドライバは、Adobe Generic PostScript Driver です。

4

1 に答える 1

0

プリンター ドライバーによって提供されるプリンター構成は、次のレジストリにあります。

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

これは、Win32_Printer WMI オブジェクトの Current および Default Paper Size プロパティと同じではないようです。

"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

Default DevMode プロパティは文字配列に変換され、次に文字列に変換されます。

結果のファイルを、notepad.exe などのエンコード対応エディターで開きます。私の経験では、それは Unicode の 2 バイト文字でした。

各プリンターには、次のような多数のプロパティが必要です。

  • 名前
  • 解像度
  • ページサイズ
  • ページ地域
  • 入力スロット

注: これは、この情報を取得するための簡単なハックです。これを行うためのより正しい方法がある場合、またはそれを整理するために何か他のことを提案したい場合は、私は最も感謝しています.

また、レジストリのこの領域にリソースまたは仕様がある場合は、お知らせください。

于 2013-05-17T05:09:10.723 に答える