Ich habe einen Windows-Dienst, der einen Prozess zum Senden einer Datei an den Drucker starten muss (ich habe diese Lösung dort gefunden Ссылка ). Ich mache das mit dem Process.Start (). Mein Problem ist, dass nichts passiert.
Der Dienst ist tatsächlich auf meinem Entwicklungscomputer installiert (win7, x64). Ich habe versucht, es als LOKALES SYSTEM, NETZWERKDIENST, LOKALER SERVICE mit dem gleichen Ergebnis jedes Mal zu installieren.
Ich habe versucht, meinen Prozess zu starten:
%Vor%und
%Vor%und auch
%Vor%Wenn ich denselben Code in einer Winform-Anwendung ausführe, funktioniert alles einwandfrei, die Datei wird an den Drucker gesendet. Aber im Windows-Dienst passiert nichts.
Ich habe diesen Post Ссылка gesehen, was erklärt, warum ich die Benutzeroberfläche nicht sehen würde, das ist in Ordnung, die ich nicht habe irgendeine UI sowieso. Aber wie im Kommentarabschnitt gesagt, sollte ein Prozess ohne Benutzereingaben in Ordnung sein. Der Prozess, den ich starte, benötigt keine Benutzereingabe.
Das Einzige, woran ich gerade denken kann, ist, dass der Dienst aufgrund der Isolation der Sitzung ( Ссылка ) nicht funktioniert finde keine installierten Drucker ... Kann das der Fall sein? Wenn ja, irgendeinen Vorschlag, wie man das umgeht? Und wenn nicht, irgendeine Vorstellung davon, was falsch ist?
Danke!
EDIT # 1
Ich habe versucht, den Dienst mit meinem Benutzerkonto auszuführen, und es funktioniert, also denke ich, dass meine Ängste bestätigt sind ... die Benutzer LOCAL SYSTEM und NETWORK SERVICE haben keine installierten Drucker.
Also werde ich meine Frage ein wenig verfeinern. Gibt es eine Möglichkeit für diesen Account, auf Drucker zuzugreifen, die auf dem Computer installiert sind?
BEARBEITEN # 2
Wir haben schließlich entschieden, dass ein Benutzer zum Ausführen dieses Dienstes erstellt wird, und in diesen Benutzerkonten installieren wir den Drucker, auf dem gedruckt werden soll.
Ich denke, diese Frage kann jetzt geschlossen werden. Danke Ihnen allen für Ihre Hilfe.
Ich hatte auch dieses Problem, dieser Trick löste es
Gehe zu den Diensten --- & gt; Doppelklicken Sie auf den gewünschten Dienst --- & gt; Weiter zum Anmelde-Tab
Geben Sie die Anmeldeinformationen ein, von denen der Drucker installiert wurde.
Führen Sie Ihren Dienst aus und überprüfen Sie die Druckerwarteschlange.
Grund: Lokales Systemkonto hat diesen Drucker nicht installiert!
Siehe Screenshot unten.
Die Lösung hier ist, Ihren lokalen Drucker zu teilen und Foxit mit
aufzurufen -/t yourfile.pdf \localhost\YourSharedPrinter
Auf diese Weise benötigt Ihr Dienst kein UserProfile und keinen DefaultPrinter.
Tags und Links .net c# printing windows-services