SCSI-Geräte nachträglich im System anmelden

  • 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:

    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 :(

    \"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und niemand ginge, um einmal zu schauen, wohin man käme, wenn man ginge.\" (Kurt Marti)

  • Hallo,


    ich wurde auf Dein Posting aufmerksam gemacht (vielen Dank erstmal, ich hatte ähnliche "Probleme" mit meinem Scanner und das hat mir wirklich weitergeholfen). Das Vermeiden des Paßwortes geht aber auch einfacher. Dazu wird wieder die rescan.exe benötigt und einfach eine Verknüpfung oder Batch-Datei mit folgendem Inhalt benutzt:


    windir%\System32\runas.exe /savecred /user:Administrator rescan.exe



    Der Parameter "/savecred" sorgt dafür, daß sich "runas" nach der einmaligen Eingabe des Paßwortes beim allerersten Aufruf merkt, daß der Nutzer diesen Befehl im Administratorkontext ausführen darf. Der Parameter funktioniert soweit ich weiß mit allen aktuellen Windows-Versionen außer der XP Home Edition. Zwar weiß ich momentan nicht genau, wie, wohin und wie sicher runas die entsprechenden Information speichert, aber damit spart man sich auf jeden Fall den Umweg über AutoIT und ein Skript mit verschlüsseltem Paßwort.



    Viele Grüße,
    Tony

  • Zitat

    Der Parameter funktioniert soweit ich weiß mit allen aktuellen Windows-Versionen außer der XP Home Edition.

    Da der Parameter savecred eigentlich aus dem net use Befehl stammt und dort auch für die Home-Version gilt, sollte es bei runas /savecred auch in der Home gehen.


    Nun hat/braucht ja nicht jeder die rescan.exe...


    Beispiel:


    ...erstellte Verknüpfung mit der Befehlszeile


    %windir%\System32\runas.exe /user:User mit Admin-Rechten oder Administrator /savecred msconfig.exe


    ...funktioniert bei einem eingeschränkten User nach einmaliger Eingabe des PW, danach startet das Programm ohne Eingabe.


    Die msconfig.exe (%windir%\system32) ist auch in der Home Version drin und geht auch nur mit Admin-Rechten


    Sollte jemand eine Home Version haben mit einem eingeschränkten Userkonto, bitte mal ausprobieren ob es da auch geht und hier rückmelden.


    Wäre nett, danke.

    hope dies last


    tschöö... ast

  • kewles script auf jeden fall..danke
    nur eine frage hätte ich
    was bewirkt man mit folgenden zeilen?


    setenv, blubb, %4%
    -->setzt eine umgebungsvariable
    -->das %4% ist denke ich für die dos umgebung gedacht


    IfNotEqual, blubb, /silent, MsgBox, 4160, RA, Das Programm %3% wird im Benutzerkontext von "%1%" ausgeführt.


    --> so und das versteh ich nu garnicht
    1. wenn ungleichheit mit variable blubb besteht wird die meldung ausgegeben
    aber was wird mit blubb überprüft... wenn ich die variable ausgeben lasse steht da nichts drin...
    also was bezweckt diese variable??
    kann mir das jemand verraten bzw erklären :) wäre super danke
    gruß

  • Hallo Gast,


    habe grade erst Deine Anfrage vom 7.4.05 entdeckt, daher erst jetzt die Antwort. Sorry.


    Die Variable "blubb" hatte ich nur dazu benutzt, um den vierten Befehlszeilenparameter, also %4% auswerten zu können. Da nach den Run- und Send-befehlen im Skript %4% nicht mehr zur Verfügung steht, muß der Wert in "Blubb" zwischengelagert werden. Nun ja, der vierte Parameter ist ganz einfach die Option /Silent, und nur wenn %4% *nicht* den Wert "Silent" enthält, soll die MSG-Box auf den Bildschirm gezaubert werden. Normalerweise ist die Variable also tatsächlich leer.


    Das ganze geht sicher auch eleganter, ich hatte aber weder Zeit noch Lust mich tiefer in diese Skriptsprache zu versenken :) Das krause Skript da oben ist echte Schnellschußarbeit also.


    Für tiefergehende Einblicke in die Skriptsprache empfehle ich das deutschsprachige Handbuch dazu: http://www.hiddensoft.com/cgi-…oIt/Docs/german_v2_64.zip


    Grüße
    Funkenzupfer

    \"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und niemand ginge, um einmal zu schauen, wohin man käme, wenn man ginge.\" (Kurt Marti)