SNMPが正しいアプローチだと思います。ほとんどのプリンターは、標準のプリンター MIBとRFC 1213 MIBを実装しているため、そこから取得できるプロパティはモデルに依存しません。たとえば、シリアル番号を探す場合、プロパティはおそらく prtGeneralSerialNumber 1.3.6.1.2.1.43.5.1.1.17 です。
他のプロパティについては、特定の MIB で検索する必要があります。たとえば、HP Laserjet MIBには、 printed-media-usage、printed-media-simplex-count、printed-media-duplex-countなどの多くのものがあります。 、使用量平均トナー カバレッジ、スキャン メディア使用量、総カラー ページ数.....
SNMP を使用するための最も拡張されたライブラリはNet-SNMPですが、C API を使用するため、重いマルチスレッド アプリケーションや SNMPv3 を使用する必要がある場合はお勧めしません。非常に有望に見えるリンクテキストのような他のライブラリがありますが、信頼できるライブラリのほとんどは商用であり、それほど安価ではありません.
プリンターがネットワークに接続されている場合、上記のすべては非常に簡単に実装できます。プリンターが USB または PPI に接続されている場合は、HP SNMP プロキシ エージェントに手を入れる必要があります。ここで素晴らしい投稿を見つけることができます。基本的には、標準のWindows SNMPサービスに便乗し、USBまたはパラレルケーブルを介してコンピューターに接続されたデフォルトのHPプリンターにSNMPデータを提供する小さなWindowsソフトウェアであると言われています. 他のブランドで動作するかどうかはわかりませんが、標準プロトコル DOT4 over USB を使用して、典型的な TCP/IP 通信をエミュレートしているようです。これらすべてのプリンターに接続する標準的な方法がある場合、これが最も有望です。私が考えることができる別の方法は、各モデルの個々のドライバーをハックして、それらがそのような情報を提供するかどうかを確認し (最も確実にそうします)、それを取得するためにそれぞれの呼び出しを行うことです。あなた自身の。
編集
ドライバーのハッキングとは、おそらく各ドライバーのツールのリバース エンジニアリングを意味します。たとえば、プリンターにトナーの状態を表示するユーティリティがあり、それがどのように機能するかを理解しようとする場合、依存を使用して実行可能ファイルを開き、使用している dll とそれらが発行するメソッドを確認します。GetTonerStatus のようなメソッドが見つかった場合dll では、それを使用してみる価値があります。

(出典:dependencywalker.com)
ツールが .Net で記述されている場合は、逆コンパイルすることでソース コードにアクセスできるため、はるかに簡単です (この方法の法的な問題については知りません)。リフレクターを使用すると、はっきりと見えます。

(出典:corypeters.net)
Reversing: Secrets of Reverse Engineeringと呼ばれるこの側面をカバーする素晴らしい本があります。
前に述べたように、これは長い道のりですが、おそらくやりたいことを達成するための唯一のものです。