Drucken durch Ausführen eines Prozesses in einem Windows-Dienst

8

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.

    
Fid 28.02.2012, 20:01
quelle

3 Antworten

3

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.

    
Edwin Ikechukwu 14.12.2014 17:04
quelle
0

Sehen Sie sich diese MSDN-Seite an: Ссылка

Gemäß dieser Seite können Sie nicht über ASP.NET-Seiten oder Windows-Dienste mit .NET drucken.

    
Icemanind 29.02.2012 03:06
quelle
0

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.

    
Louis Haußknecht 20.06.2012 10:00
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '396156',
    'url' => 'printing-by-executing-a-process-in-a-windows-service',
];

$_SESSION = [
    '__flash' => [],
];