Brauche Hilfe zum öffnen der Drucker-spool-shadow-Datei (.SHD), die gesperrt ist
Ich bin daran interessiert, einige Informationen in einer shadow-Datei (.shd), der sich in der windows spooling-Verzeichnis "C:\Windows\System32\spool\PRINTERS". Jedes mal, wenn ein Druckauftrag gestartet wird, wird eine spool-Datei (.spl) und einer shadow-Datei (.shd) sind in diesem Verzeichnis erstellt werden. Bisher habe ich erfolgreich bei der Erkennung, wenn ein Druckauftrag gestartet wurde, und in der Lage gewesen, um zu pausieren, dass die Druck-job. Wenn Sie don ' T pause die Aufgabe, die Dateien, die schließlich Ihren Weg in den Drucker und dann werden gelöscht, indem windows.
Mein problem ist. Kann ich nicht öffnen .SHD-Dateien, weil Sie gesperrt sind, in der Weise, dass Sie nicht Lesen können, während Sie durch die offenen sprint-spooler. Ich habe sogar versucht zu gehen, um die Datei in windows-explorer und kopiere die Datei auf eine andere Datei, und das hat nicht funktioniert entweder. Die .SPL-spool-Dateien, die ich öffnen kann obwohl. Ich wart einfach, und ziemlich schnell den spooler-Version dieser Datei. Für die shadow-Datei ist es allerdings dauerhaft hält sich an diese Datei. Leider, sein, den ich brauche.
Die Linie der code, den ich verwende, die speziell zum öffnen der Datei lautet wie folgt:
m_spoolJobStream = new FileStream(spoolFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
Die IOException, die ich erhalten:
Der Prozess kann nicht auf die Datei zugreifen 'C:\Windows\system32\spool\PRINTERS\FP00083.SHD" weil es wird von einem anderen Prozess verwendet.
Also ja, es wird von einem anderen Prozess verwendet. Deren Einsatz durch das Fenster Druck-spooler-Dienst. Aber ich glaube nicht, dass es irgendetwas gibt, was ich tun kann. Alles was ich will zu tun ist, Lesen Sie die Datei. Ich will nicht, um änderungen vornehmen zu dürfen. Ist es etwas, was ich hier tun kann oder bin ich einfach nur geschraubt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktivieren Sie die option: "Keep gedruckte Dokumente" (wenn Sie HP-Drucker) und dann sehen Sie Ihre spool-Datei-Ordner, die beiden Schatten und spool-Dateien da sein würde.
Gut, ich habe nicht einen Weg finden, um dieses problem. Ich vermute es gibt keine Lösung für dieses und es ist by design. Allerdings habe ich einen anderen Weg finden, um die Informationen bekommen, die ich wollte (zumindest scheint es so bisher).
Ich bin mit dem FindNextPrinterChangeNotification () - routine heraus der winspool.drv-Bibliothek. Dieser Kerl gibt einen Zeiger auf eine PRINTER_NOTIFY_INFO Struktur, die wiederum enthält ein array von PRINTER_NOTIFY_INFO_DATA Strukturen. In diesem array gibt es ein element mit seinem "Feld" Mitglied markiert als "JOB_NOTIFY_FIELD_DEVMODE". Dieses element enthält eine ziemlich große Struktur vom Typ DEVMODE. Die Struktur erklärt sich durch M$ hier http://msdn.microsoft.com/en-us/library/dd183565%28v=vs.85%29.aspx . Diese Struktur aussieht, es enthält das, was ich Suche und offenbar eingewickelt ist im .SHD-Datei sowieso laut dieser Seite http://www.undocprint.org/formats/winspool/shd. Ich würde gerne wissen, was ist .SHD-Datei, aber ich kann immer noch nicht öffnen, weil seine gesperrt, während der job angehalten wird, und ich vermute es bleibt gesperrt, bis der job abgeschlossen ist. Oh, ich denke das meine neue Lösung ist eleganter sowieso.
Nur sicherstellen, dass Sie die pause der Auftrag in das spool-SOWOHL auf Ihrem Feld und den server, dann sollten Sie in der Lage sein, zu kopieren/öffnen/verschieben der shd-Datei, nur wie kann man die spl-Datei. Arbeitete für mich, eh...
Dies funktioniert für mich:
- Hängen Sie Ihren Drucker (z.B. Papierstau das Papier)
- Drucken und beobachten .SHD und .SPL erstellt
- Stoppen-Druckwarteschlange
- Öffnen Sie die Datei
Könnte das problem der Dateifreigabe.ReadWrite-parameter. Sie Fragen sich, Lesen und schreiben auf die Datei, und vielleicht das ist, warum Sie eine Fehlermeldung erhalten. Sollten Sie versuchen, Fragen, die für nur-lese-Berechtigung.