Benötigen Sie Hilfe beim Öffnen der Drucker -Spool -Schattendatei (.shd), die gesperrt ist

StackOverflow https://stackoverflow.com/questions/7340882

  •  27-10-2019
  •  | 
  •  

Frage

Ich interessiere mich für einige Informationen in einer Schattendatei (.shd) im Windows Print Spooling -Verzeichnis "C: Windows System32 Spool Printers". Jedes Mal, wenn ein Druckauftrag gestartet wird, werden in diesem Verzeichnis eine Spulendatei (.SPL) und eine Schattendatei (.shd) erstellt. Bisher war es mir erfolgreich, zu erkennen, als ein Druckauftrag begonnen hat, und konnte diesen Druckauftrag innehalten. Wenn Sie den Job nicht pausieren, finden die Dateien schließlich auf den Weg zum Drucker und werden dann von Windows gelöscht.

Mein Problem ist. Ich kann die .shd -Dateien nicht öffnen, da sie so gesperrt sind, dass Sie sie nicht lesen können, während sie vom Sprint -Spooler geöffnet werden. Ich habe sogar versucht, in die Datei in Windows Explorer zu gehen und die Datei einfach in eine andere Datei zu kopieren, und das hat auch nicht funktioniert. Die .PL -Spool -Dateien, die ich jedoch öffnen kann. Ich warte einfach und die Spooler veröffentlichen diese Datei ziemlich schnell. Für die Schattendatei hält sie jedoch dauerhaft an dieser Datei fest. Leider ist es derjenige, den ich brauche.

Die Codezeile, die ich speziell zum Öffnen der Datei verwende, lautet wie folgt:

m_spoolJobStream = new FileStream(spoolFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

Die IOException, die ich bekomme, ist:

Der Prozess kann nicht auf die Datei 'C: Windows System32 Spool Printers fp00083.shd' zugreifen, da er von einem anderen Prozess verwendet wird.

Also ja, es wird von einem anderen Prozess verwendet. Es wird vom Druckspooler des Fensters verwendet. Aber ich glaube nicht, dass ich etwas dagegen tun kann. Ich möchte nur die Datei lesen. Ich möchte keine Änderungen daran vornehmen. Kann ich hier etwas tun oder bin ich nur geschraubt?

War es hilfreich?

Lösung 2

Nun, ich habe dieses Problem keinen Weg gefunden. Ich vermute, dass es keine Lösung dafür gibt, und es ist aus Design. Ich habe jedoch einen anderen Weg gefunden, um die gewünschten Informationen zu erhalten (zumindest scheint es so weit).

Ich verwende die Routine für findNextPrinterCangenotification () aus der Winspool.DRV -Bibliothek. Dieser Typ gibt einen Zeiger auf eine Struktur Printer_Notify_info zurück, die wiederum ein Array von Printer_Notify_info_Data -Strukturen enthält. In diesem Array gibt es ein Element mit seinem "Feld" -Mitglied, das als "Job_Notify_Field_DevMode" gekennzeichnet ist. Dieses Element enthält eine ziemlich große Struktur vom Typ DevMode. Die Struktur wird hier von M $ erklärt http://msdn.microsoft.com/en-us/library/dd183565%28v=vs.85%29.aspx . Diese Struktur sieht so aus http://www.undocprint.org/formats/winspool/shd. Ich würde gerne wissen, was in dieser .shd -Datei noch ist, aber ich kann sie immer noch nicht öffnen, weil es gesperrt ist, während der Job innehalten wird, und ich vermute, dass er verschlossen bleibt, bis der Job abgeschlossen ist. Na ja, ich denke, meine neue Lösung ist sowieso eleganter.

Andere Tipps

Überprüfen Sie die Option: "Drucken Dokumente halten"(Wenn Sie HP -Drucker haben) und dann Ihren Spool -Dateiordner sehen, wären sowohl Shadow- als auch Spool -Dateien da.

enter image description here

Stellen Sie einfach sicher, dass Sie den Job in der Spule sowohl in Ihrer Box als auch auf dem Server pausieren, und dann sollten Sie die SHD -Datei so kopieren/öffnen/verschieben/verschieben, genau wie Sie die SPL -Datei können. Arbeitete für mich sowieso ...

Das funktioniert für mich:
- Hängen Sie Ihren Drucker auf (zB das Papier jammen)
- Drucken und beobachten Sie .Shd und .Spl werden erstellt
- Druckenspuler stoppen
- Öffne die Datei

Das Problem könnte der Parameter fileshare.readwrite sein. Sie bitten Sie, in die Datei zu lesen und zu schreiben, und vielleicht erhalten Sie deshalb einen Fehler. Sie sollten versuchen, nur schreibgeschützte Erlaubnis zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top