27 Februar 2006

Warum einfach, wenns auch kompliziert geht?

Diese Frage stellen sich viele von uns fast täglich, aber dieser folgende Fall von übermäßiger, aber notwendiger Kompliziertheit stellt so manches in den Schatten. Vor allem wird klar, wie sehr Windows einem manchmal Steine in den Weg legt um sein Ziel ja nicht zu erreichen.
In meinem Netzwerk zu Hause existiert neben meinem Linux-Rechner auch ein WindowsXP-Rechner, und beide wollen sich einen Drucker teilen. Bis dato besaß ich einen alten HP 710 C, der ganz brav unter Linux einfach lief und der sich über Samba auch mühelos von Windows aus über Netzwerk bedrucken ließ.
Nachdem sich Besitzer des Windows-Rechners veranlasst hat, das ein neuer Drucker gekauft wird, nämlich einen Canon PIXMA Ip 5000, wollten wir das ganze umgekehrt machen. Der Drucker sollte ans Windows-System angeschlossen werden, und ich sollte dann von Linux aus darauf drucken können. Aber so einfach, wie man annehmen könnte war das aber ganz und garnicht!
Der Traum der direkten Unterstützung scheitert an der Tatsache, das Canon für seine aktuellen Modelle keine Linux-Treiber zur verfügung stellt. Normalerweise würde man an diese Stelle bereits aufgeben, aber ein inovatives Gehirn hat immer eine Idee auf Lager und so Googelte ich nach einer Lösung. Ich überlegte mir, dass es ja irgendwie möglich sein sollte, einen virtuellen Postscript-Drucker unter Windows einzurichten, der Druckaufträge aus dem Netzwerk annimmt, und diese dann für den Canon-Drucker übersetzt und dorthin umleitet. Standart-Postscript-Drucker sind unter Linux nämlich absolut kein Problem.
Der erste Link unter diesem Bericht zeigt die Anleitung, wie es funktioniert, ich will hier nur mal das Prinzip erklären.
Von Linux aus wird ein Dokument ins Postscript-Format umgewandelt und an einen virtuellen Post-Script-Drucker auf dem Windows-System weitergeleitet. Dieser schleift die Postscript-Datei durch ein Programm namens "Ghostscript" durch und dieses druckt dann automatisch auf dem Canon-Drucker das gewünschte Dokument.
Das klingt kompliziert? Ist es auch, aber es kommt ja noch besser!
Relativ weit unten in der Anleitung steht die Aufforderung einen Eintrag in der Registry zu verändern um Druckaufträge automatisch zum Canon weiterzuleiten, weil ansonsten immer ein Dialog eingeblendet wird, der den (Windows-)Benutzer fragt, wo er den Druckauftrag denn hin haben will.
Nach Befolgung der angegebenen Anweisung klappte es auch mit der Testseite ohne Nachfrage, allerdings nicht mehr nach einem Windows-Reboot! WindowsXP scheint (zumnindest bei uns) die Eigenart zu haben gewisse Registry-Einträge nicht dauerhaft speichern zu können und ich musste mir etwas einfallen lassen, den Eintrag bei jedem Systemstart automatisch neu vorzunehmen. Ich wollte zuerst mit Rechten in der Registry herumspielen um die Änderung zu verhindern, aber leider ohne Erfolg.
Also, was macht der schlaue Anwender, der mit DOS großgeworden ist? Er erstellt eine REG-Datei mit dem Eintrag und eine Batchdatei, die die REG-Datei automatisch in die Registry einträgt. Dies verlinkt er im Autostart und er könnte fertig sein, wenn da nicht das böse Windows wäre. Die Wiederherstellung der Registry und somit die Löschung des Eintrags, geschieht relativ spät im Bootvorgang und natürlich nachdem der Autostart abgearbeitet wurde.
Also habe ich nochmal gegoogelt und ein kleines Tool gefunden um Batch-Dateien für eine gewisse Zeit zu pausieren (wait.exe, Link ist unten). Ich stellte es auf 15 Sekunden und das reichte aus um zu funktionieren.
Ich gebe zu, das dies eine äußerst unsaubere Lösung ist, aber die einzige, die funktioniert hat, und das ganze nur, weil Windows teilweise recht komisch reagiert. Allerdings muss ich sagen, dass der Reset von Teilen der Registry nur bei einem speziellen Benutzer passiert, ich aber nicht herausgefunden habe, woran das liegen kann.

Links:
Creating a Virtual Postscript Printer in Windows using Ghostscript
Wait.exe

Kommentare:

lothar hat gesagt…

Anscheinend hat der Benutzer unter Windows ganz eingeschränkte Rechte. Da würde ich mich doch einfach mal als Administrator bei Windows anmelden und die Registry ändern. Diese Änderung ist dann sicher permanent.

snoopy1alpha hat gesagt…

Ich weiß es zu schätzen, dass du dir über dieses Problem Gedanken machst, aber glaube mir, wenn ich so etwas löse, dann bin ich äußerst gründlich.
Aber ich werde jetzt trotzdem mal drauf eingehen. Der Benutzer-Account ist einer, der bereits über Admin-Rechnte verfügt. Es kommt noch besser, wenn ich die Änderungen als "richtiger" Administrator vornehme, und dann als Administrator neu starte, sind sie permanent, aber wenn ich den besagten Benutzer anmelde, dann verschwindet er wieder.
Irgendetwas im Autostart von Windows schreibt diesen speziellen Eintrag neu, ich habe aber nicht herausfinden können, welcher das war.