Ich möchte mit Windows 7 die folgende Anforderung erfüllen Gast Konto
- Der Benutzer wird nicht sehen / auswählen können einen bestimmten Drucker beim Drucken mit zB: Microsoft Word, Adobe Reader usw.
- 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.
Antworten:
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.
II. Bereiten Sie das System und Ihre Anwendung darauf vor, als anderer Benutzer zu drucken
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).
Teilen Sie Ihren Drucker (normalerweise wie bei einem Netzwerk)
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).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.
quelle