Das Problem kennen sicher viele Benutzer von SCSI-Geräten, deren Hersteller sich die Mühe sparen, ordentliche Treiber zu programmieren: Die Geräte werden wenn sie nicht schon bei Systemstart eingeschaltet sind nicht mehr von Windows erkannt. Da hilft dann im ungünstigsten Fall nicht mal die Hardware-erkennung, was oft als Workaround empfohlen wird.
So ging es mir lange Zeit mit einem SCSI-Scanner von Mustek. Das dieser Hersteller sich noch nie ernsthafte Gedanken um gute Treiber gemacht hat, leite ich daraus ab, daß schon unter Win95/98 keine fehlerfreien Treiber geliefert werden konnten. Da gab es ein Speicherleck, wodurch nach einer bestimmten Anzahl an Scans (Abhängig von der Auflösung) erst der Rechner neu gestartet werden mußte, um weiter scannen zu dürfen... Und nun soll man unter W2k schon morgens den Scanner einschalten auch wenn man noch gar nicht sicher weiß, ob man abends überhaupt scannen will, oder wenn man diese Zeremonie einmal vergessen hat, alle Zeichnungen und die CAD schließen um den Rechner neu zu starten. Der Mustek-Support war zwar sehr freundlich, schickte auch mehrfach neue Treiber (die allesamt das gleiche Problem hatten) konnte das Problem aber nicht lösen. Da es mich genervt hat, habe ich es jetzt selbst in die Hand genommen.
Ich habe bei Microsoft im Treiber Entwickler Paket (DDK) eine Datei ausfindig gemacht, mit der es möglich ist, SCSI-Geräte nachträglich am System anzumelden:
How to rescan the SCSI bus for new devices
Ladet euch dort die Datei rescan1.exe herunter, und entpackt sie. Die darin enthaltene rescan.exe meldet jedes nachträglich eingeschaltete SCSI-Gerät beim System an.
Einziges Problem, das bleibt: rescan funktioniert nur, wenn es im Administratorkontext ausgeführt wird. Als normaler Benutzer bekommt man nur eine Fehlermeldung.
Um nun nicht zum Administratorkonto wechseln zu müssen (zumindest unter Win2000 müßte man hierzu alle laufenden Anwendungen beenden) benutze ich den sekundären Anmeldedienst. (hierzu muß in den Diensten der Dienst "Ausführen als" gestartet sein. Das ist aber auch Windows-Standard) Da ich mir nun auch noch das ständige Eintippen des Paßwortes für den Administrator ersparen wollte, habe ich dazu AutoIT 2.6.4 von Jonathan Bennett verwendet (das gibt es als freeware hier:
AutoIt v2 Home Page - AutoIt2 )
und damit folgendes Script als exe Datei kompiliert:
; Script zum ausführen beliebiger Programme in fremdem Benutzerkontext mit automatisierter Paßworteingabe
; OS: Win2000
; Systemvoraussetzungen: Dienst "runas" aktiviert.
; Befehlszeilenparameter
; ©2004
HideAutoItDebug, Off
HideAutoItWin, On
; BlockInput, ON
setenv, bla, %1%
setenv, blubb, %4%
IfEqual, bla,, gosub, Hilfe
IfEqual, bla, /?, Goto, Hilfe
Run, runas /user:%1% %3%
Send, %2%#{ENTER}
IfNotEqual, blubb, /silent, MsgBox, 4160, RA, Das Programm %3% wird im Benutzerkontext von "%1%" ausgeführt.
Exit
Hilfe:
MsgBox, 32, RA Hilfe, Verwendung: Ausführen beliebiger Programme in einem fremdem Benutzerkontext \nmit automatischer Paßworteingabe für Windows2000 \n\nSyntax: ra <benutzer> <Kennwort> <Programm> </silent>\n\n<benutzer> fremder benutzer, username@domäne, domäne\\benutzer\n in dessen Kontext das Programm ausgeführt werden soll\n<Kennwort> Paßphrase des in <benutzer> angegebenen Benutzers\n<Programm> Programmdateiname, Pfad\\Programmdateiname. Zusätzliche Parameter\n müssen zusammen mit dem Programmdateinamen in " " eingeschlossen werden\n</silent> ohne Bestätigungsdialog\n</?> Zeigt dieses Hilfefenster.\n\nDer Dienst "runas" muß auf dem System aktiviert sein. ©2004
Alles anzeigen
Ausgeführt wird die fertige ra.exe dann entweder in der Befehlszeile, aus einer Batch-Datei oder unter Start-->Ausführen, oder man legt eine Verknüpfung an mit dem Ziel
ra <Benutzerkonto> <Paßwort> <Programm> [</silent>]
Nun muß man nur noch ra Turbokatze Feuerschweif rescan.exe /silent in einer Verknüpfung ablegen, und schon wird auch für normale Benutzer per Mausklick jedes SCSI-Gerät nachträglich gefunden. Um das Paßwort vor neugierigen Blicken zu verbergen, erlaubt man in den Sicherheitseinstellungen der Verknüpfung dem Benutzer nur das Ausführen, nicht aber das lesen und ändern derselben...
Wer sich mit Skripten gut auskennt und Lust und Zeit hat, kann ja mal eine Version erstellen, bei der das Paßwort verschlüsselt wird, z.B. in einer ini-Datei oder in der Windows-Registrierung. Ich habe die Befehlszeilenparameter gewählt, weil es am einfachsten war. Mir genügt es so.
Viel Spaß damit,
Grüße
Funkenzupfer.
P.S.: Das ganze habe ich eigentlich für Win2000 erstellt, aber ich glaube, diese Problematik gibt es auch noch unter XP. Ursprünglich hatte ich es gestern in Win-report veröffentlicht... Aber dort liest es ja nun keiner mehr