2012-10-12 12 views
17

特定のWindows印刷ジョブのスプールデータをディスク上の任意の場所にコピーしたいとします。スプールファイルプーリングが有効になっていても、特定のIDを持つジョブのスプールファイルを見つけるにはどうすればよいですか?

Print Spooler APIからの印刷ジョブのジョブIDがあります。私はこの仕事がスプールを終了したことを知っています。私は、私がする必要があることを完了するための時間が来る前に、仕事が削除されないことを知っています。

ファイルプールが無効になっている場合、「xxxxx.spl」という形式のファイルのスプールディレクトリを調べることでこれを行うことができます。ここで、xxxxxは0埋め込みジョブIDです。

ファイルプーリングが有効になっている場合はどうすればよいですか?

ジョブIDを取得してスプールデータのストリームを返したメソッドがあったとしても喜んでいますが、現時点ではそうは思われません。 「PrinterName、Job xxxx」とReadPrinterをhereと書いたようなOpenPrinterを使用しても同様のことが起こる可能性がありますが、これまでのところ私はhaven't been able to get it to workであり、データをメモリにロードするように見えます大きなスプールファイルで動作します(> 1 GBは普通ではありません)。

私の2番目の好みは、ファイルプーリングの設定に関係なく、IDを渡してディスク上のスプールデータを持つファイルの場所を取得する方法です。

私の3番目の設定は、プールされたファイル( "FPyyyyy.spl")をそれが対象とするジョブIDにマップする方法です。

これらのいずれかが実行可能か、誰かがこの問題を解決する方法についてより良いアイデアを持っていますか? 私たちは、顧客がプリンタごとにレジストリを編集してスプールファイルのプーリングを無効にすることを義務付けていますが、回避することをお勧めします。この。

+0

こんにちは、「あなたがする必要があることを完了するための時間が来る前に、仕事が削除されないことを知っていますか?どのようにスプールファイルを保持できますか? – Kira

答えて

8

私はfigured outうまく私たちの問題を解決した、なぜOpenPrinterへの私の呼び出しは失敗していましたし、私は正常にOpenPrinterを使用してスプールデータを読み込み、ReadPrinterています。

私はまだ優れたソリューションを思いついた人に賞金を授与します。

1

あなたはこれを読んでいますか?

http://www.undocprint.org/winspool/spool_files

ことがあり、スプールファイルhttp://www.codeproject.com/Articles/9720/The-Windows-NT-print-spool-shadow-file-formatの形式については、この記事では、しかしもあるが、あなたがすでにフォーマットを知っているようだ

具体的To Turn Off Spool File Pooling on a Per Printer Queue-Basis

あなたは:)

が必要なすべてを持っているようですそれはおそらく何の助けにもなりません。

+0

はい私はそのページを読んでいます。スプールファイルプーリングを無効にせずにスプールデータにアクセスしたいと考えています。作成したすべてのプリンタのレジストリを編集する(またはそのためにレジストリを編集しようとする)ように顧客に強制することは、避けたいものです。 –

関連する問題