これが私たちがやろうとしていることです:
クライアントがコンピューターに印刷するすべてのもの(すべてのクライアントがPOSシステムを実行しており、Windows XPのみを使用している)を取得して送信する、目立たない方法が必要です。そのための最善の方法は、acを作成することです。 #すでに簡単に解析できるスプールファイルを送信するアプリ。
ただし、これには「すべての印刷ドキュメントを保持する」をtrueに設定する必要があります。次の理由から、手動ではなくアプリでこれを実行したいと考えています。クライアントの一部(数百)は、より適切な言葉がないため、愚かです。私たちは彼らにコントロールパネルをめちゃくちゃにさせたくありません...私たちの技術サポートの人々はそれなりに忙しいです。
ここで私は問題に遭遇しました:
string searchQuery = "SELECT * FROM Win32_Printer";
ManagementObjectSearcher searchPrinters = new ManagementObjectSearcher(searchQuery);
ManagementObjectCollection printerCollection = searchPrinters.Get();
foreach (ManagementObject printer in printerCollection)
{
PropertyDataCollection printerProperties = printer.Properties;
foreach (PropertyData property in printerProperties)
{
if (property.Name == "KeepPrintedJobs")
{
printerProperties[property.Name].Value = true;
}
}
}
これは、数時間のWMI調査からわかる限り、各プリンターのKeepPrintedJobsプロパティをtrueに設定する必要があります...しかし、機能しません。foreachループが終了するとすぐに、KeepPrintedJobsはfalseに戻されます。レジストリをいじり回さずにWMIを使用したいのですが、これを機能させるために永遠に費やすことはできません。何が欠けているかについてのアイデアはありますか?