Entries tagged standarddrucker

Standarddrucker abhaengig vom Standort setzen

Posted on 24. Februar 2012 Comments

Auf der Arbeit sind die PCs fortlaufend beschriftet und die letzten 3 Zeichen ist der Raum, also z.B. PC22-123 ist der 22. PC in Raum 123. Die Räume sind dabei IMMER dreistellig, d.h. in Raum 42 wäre der Raum 042.

Mit einem kleinen Perlskript im Autostart bekommt man seinen gewünschten Drucker anhand des Hostnames:

use Sys::Hostname;
$host = hostname;
chomp($host);
$raumnr=substr($host,length($host)-3,length($host)-1);
print "Host: " . $host . "\n";
print "RaumNr: " . $raumnr . "\n";

if ($raumnr == 123) {
  system('rundll32 printui.dll,PrintUIEntry /y /n "Drucker_Raum_123"');
}
elsif (...)
else {
   print "Computername nicht im richtigen Format";
}

Den Hostname bekommt man vom System über sys::hostname. chomp() entfernt eventuelle newline characters. Mittels substr() bekommt man einen Teilstring zurück, der von der Länge-3 bis Länge -1 geht, also genau die letzten 3 Buchstaben bzw. Zahlen. Hier hat man dann die Raumnummer. Anhand derer wird mit der rundll ein Standarddrucker gesetzt(/y) der in Anführungszeichen hinter /n steht. Damit sich die Anführungszeichen nicht in die Quere kommen, nimmt man für den system() Befehl die einstelligen Hochkommata.

Standarddrucker von anderen Benutzern aendern

Posted on 12. September 2011 Comments

Drucker von anderen Usern zu ändern ist ja garnicht mal das Problem, man muss sich halt nur bei jedem User einzeln anmelden und den Drucker per Hand umstellen. Per Skript gibt es 2 Möglichkeiten: über rundll32 oder über die Registry.

1. rundll32-Methode (Danke an daedalus von administrator.de)

rundll32 printui.dll,PrintUIEntry /y /n "Druckername"

Einfach diesen Befehl in eine Textdatei schreiben und als .bat speichern. Das /n ist der Parameter für den Namen, der danach folgen muss, das /y heisst, dieser Drucker soll als Standarddrucker gesetzt werden. Das ist meiner Meinung nach die einfacherere Methode. Wenn der Druckername keine Leerzeichen enthält, können die Anführungszeichen auch weggelassen werden.

2. Registry-Methode (Danke an Micheal von Windows FAQ)

Da ist natürlich noch viel umständlicher ist in der Registry rumzupulen als den Drucker mal eben anzuklicken, kann man ein .reg-Skript schreiben dass den folgenden Inhalt hat:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Sofrware\Microsoft\Windows NT\CurrentVersion\Windows]"Device"="Standarddrucker,winspool,lpt01:"

Dabei steht der erste Wert für den Druckernamen, winspool ist die dll die für das Drucken zuständig ist und dann der Anschluss, wobei LPT: für Lokale und Ne: für Netzwerkdrucker und Software Drucker(z.B. PDF Generator) verwendet wird.

Um jetzt vom Adminstrator aus die Drucker zu ändern, kann man per runas die eben genannten Skripte starten, s. auch

runas /?

Aufrufe:

runas /user:username "C:\pfad\rundllskript.bat"

bzw.

runas /user:username "C:\pfad\registryskript.reg"

Ein Problem ergibt sich, wenn der User kein Passwort hat, da runas standardmässig, ausser bei Windows 2000, keine leeren Passwörter akzeptiert. Wenn man allerdings den Registry-Eintrag LimitBlankPasswordUse im Ordner HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa aus 0 ändert, ist auch das kein Problem mehr.(Tip aus der c’t 1/06)