Drucker unter Windows 7 ausblenden, jedoch programmgesteuert drucken

0

Ich möchte mit Windows 7 die folgende Anforderung erfüllen Gast Konto

  1. Der Benutzer wird nicht sehen / auswählen können einen bestimmten Drucker beim Drucken mit zB: Microsoft Word, Adobe Reader usw.
  2. Der Benutzer ist jedoch darf drucken mit diesem versteckten Drucker mit meiner selbst entwickelten Anwendung. (Dies bedeutet, dass die Anwendung selbst Daten zum Drucken an den verborgenen Drucker senden kann.)

Ein Ansatz, den ich denke, ist, das zu deaktivieren Berechtigung "Drucken" für dieses Gastkonto. Der Drucker wird für den Benutzer ausgeblendet, der Benutzer kann jedoch nicht drucken.

Darf ich wissen, ob es das überhaupt gibt? Entweder programmatisch oder mit Konfiguration.

NcJie
quelle
2
Können Sie erläutern, warum Sie das erreichen wollen? Es scheint seltsam, das zu wollen.
LPChip
Ich möchte versuchen, einen Drucker nur in Microsoft Word, Adobe Reader usw. auszuwählen. Wenn Sie diesen Drucker (einen virtuellen Drucker) auswählen, zählt er die Anzahl der Seiten, die der Benutzer druckt, um einige Druckeinstellungen zu beschränken (Farbe, Schwarzweiß) usw. Danach sendet der virtuelle Drucker selbst einen physischen Drucker zum Drucken. Grundsätzlich möchte ich die Kontrolle darüber haben, was der Benutzer druckt.
NcJie
1
Es gibt keine "einfache" Möglichkeit (sagt Microsoft), Geräte auszublenden support.microsoft.com/kb/2018577
root
Sie wissen, dass es Produkte gibt, die dies bereits tun
Keltari
@ Keltari kann ich wissen, wie der Produktname ist? Vielen Dank
NcJie

Antworten:

2

Es kann schwierig sein, dem Drucker das Drucken aus einer ausgewählten Anwendung zu erlauben. Es gibt keinen solchen Mechanismus in Windows, aber Sie können dies irgendwie umgehen. Ich habe welche schmutzige Idee , Sie können mehr darüber nachdenken und vielleicht werden Sie etwas besseres oder weniger komplexes herausfinden.

Sie können Druckerberechtigungen verwalten, einschließlich lokaler Drucker in Windows (seit Windows 2000).

I. Blockieren Sie die Druckberechtigungen für den Gast (oder eine Gruppe von Gästen oder einen anderen Benutzer, der Ihr Programm verwenden soll), um das normale Drucken für dieses Konto / diese Gruppe zu deaktivieren.

  1. Wechseln Sie zu Geräte und Drucker (in der Systemsteuerung).
  2. Klicken Sie mit der rechten Maustaste auf den Drucker und wählen Sie "Druckereigenschaften" (nicht nur "Eigenschaften"!).
  3. Es sollte die Registerkarte Sicherheit geben. Sie können Berechtigungen für Konten und Gruppen verwalten.
  4. Konfigurieren Sie die Berechtigungen für Ihr Gastkonto (oder für die Gruppe Gäste, es liegt an Ihnen).

II. Bereiten Sie das System und Ihre Anwendung darauf vor, als anderer Benutzer zu drucken

  1. Fügen Sie ein zusätzliches Windows-Konto hinzu, und lassen Sie es drucken. Möglicherweise möchten Sie die normale Anmeldung deaktivieren (ich denke, das Entfernen dieses Benutzers aus der Gruppe Benutzer wird verhindern, dass dieser Benutzer auf dem Anmeldebildschirm angezeigt wird).

  2. Teilen Sie Ihren Drucker (normalerweise wie bei einem Netzwerk)

  3. Verwenden Sie in Ihrer Anwendung eine für Ihre Programmiersprache geeignete Funktion, die Befehlszeilenbefehle ausführt. Für .NET könnte dies System.Diagnostics.Process.Start (Zeichenfolge) sein, in Python os.system (cmd) usw.

    net use \\ localhost \ printer_share_name / u: nonguestaccountname nonguestaccountpassowrd "

    Dadurch wird Ihr Drucker durch Verwendung von als anderer Benutzer (hoffentlich - sofort) zugeordnet nonguestaccountname Kontoerlaubnis zum Ausdrucken (Das Drucken wird als anderer Benutzer vorgenommen, den wir zuvor erstellt haben).

  4. Möglicherweise müssen Sie warten, bis die Druckerzuordnung abgeschlossen ist, bevor Sie versuchen, zu drucken, Fehler zu behandeln usw.
  5. Behandeln Sie Ihren Druck in der Anwendung
  6. Ausführen:

    net use \\ localhost \ printer_share_name / delete

    Dadurch wird Ihr Drucker (hoffentlich - sofort) abgemeldet.

Das Ganze sollte weniger als eine Sekunde dauern - während der Benutzer von jeder Anwendung aus drucken konnte, gibt es eine Loch in meiner Idee , aber normale Benutzer werden wahrscheinlich nicht herausfinden, was los ist und es sollte ausreichen, um Papier / Tinte / Toner in der Firma oder etwas zu sparen :)

Mit Netzwerkdruckern - das könnte unzuverlässig, langsam sein und von der LAN-Netzwerkqualität / -Last abhängen, aber wenn Sie lokale Drucker wie Netzwerkdrucker zuordnen, sollte dies sehr schnell funktionieren.

Wie ich bereits schrieb - dies ist eine sehr schmutzige Methode, aber ich habe keine andere Methode als die temporäre Druckerzuordnung als anderer Benutzer herausgefunden. Dies ist nicht 100% zuverlässig und sicher, aber für einige Zwecke können Sie es verwenden.

Alles, was ich oben geschrieben habe, kann mit CMD- oder VBS-Skripts in Ihrem Anwendungsinstallationsprogramm automatisiert werden.

EINE ANDERE METHODE Möglicherweise wird ein Share / Unhare-Drucker ausgeführt, aber Sie benötigen trotzdem ein zusätzliches Windows-Konto.

Zusätzliche tipps:

Drucker über Befehlszeile freigeben

(Ersetzen Sie en-US in path für Ihr Gebietsschema, wenn Sie keine englischen Fenster verwenden.)

Bearbeiten:

Möglicherweise müssen Sie dies unter Vista Basic und XP Home Edition testen. Möglicherweise ist die Benutzeroberfläche für die Berechtigungskontrolle vereinfacht, und einige Funktionen sind ausgeblendet.

Kamil
quelle
Der Ansatz klingt machbar! Hoffentlich hilft es mir, dieses große Hindernis zu lösen.
NcJie