Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

gesperrtes Diskettenlaufwerk mittels VB-Script ermitteln





Frage

Wir haben in der Firma sehr viele PCs bei denen im Bios das Diskettenlaufwerk A: auf Nothing gestellt wurde (zum Ärger der Anwender). Weiterhin habe ich ein VB-Script geschrieben (wird mittels AutoRun ausgeführt), was uns neben der Anmeldezeit verschiedene Informationen in ein Textfile im Netz schreibt (auch zum Ärger der Anwender). Eine Information fehlt mir jedoch noch: Wie kann ich ermitteln, ob das Diskettenlaufwerk nun gesperrt ist oder nicht? Problem: egal ob im Bios gesperrt oder nicht, gibt es noch den Laufwerksbuchstaben A:. Der Einzige Unterschied ist der, dass als Datenträgertyp bei nicht gesperrtem LW in den Eigenschaften "Diskette 3,5" angezeigt wird und bei gesperrtem LW wird "Wechseldatenträger". Diese Infos lassen sich aber mittels VB nicht unterscheiden - Oder???? Thanks Rainer P.S. .Drives.DriveType liefert immer "Wechselmedium" egal ob gesperrt oder nicht.

Antwort 1 von Rainer Stocher

@viagr2000
Hast Du auch keine Idee?????

Antwort 2 von Viagra

*g* langsam komm ich mir vor wie ein bunter Hund.

Aber sorry, ich hab keine Lösung parat.

Hab zwar eine Weile dran überlegt, aber für mich wäre auch als einziges Drives.DriveType in Frage gekommen. Was anderes kenn ich da nicht.

Du könntest maximal schauen, ob du das aus der Registry auslesen könntest.

Schau einfach mal bei so einem gesperrten Computer, ob da irgend was "auffälliges" drin steht - rein theoretisch muß da ja was sein.

Wenn du irgend einen Key findest melde dich, dann können wir weiter schauen.

Ansonsten bin ich etwas ratlos mit deiner Sache...
Bis denn dann
Der ich

Antwort 3 von Rainer Stocher

Erst mal Danke.
Auf die Idee mit der Registry bin ich auch schon gekommen (und habe es auch probiert). Da Problem ist, das es z.B. unter Win95 und Win98 bereits die ersten Unterscheide gibt. Und wenn dann am PC auch noch unterschiedliche Benutzerprofile hinterlegt sind, hört es ganz auf (bzw. fängt an in unflexible Strukturen auszuarten). Naja, vielleicht fällt mir noch was ein...
Gruß Rainer

Antwort 4 von vbm

Versuch es mal mit dem.

Sub ShowDriveType(drvpath)
Dim fs, d, s, t
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(drvpath)
Select Case d.DriveType
Case 0: t = "Unknown"
Case 1: t = "Removable"
Case 2: t = "Fixed"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disk"
End Select
s = "Drive " & d.DriveLetter & ": - " & t
MsgBox s
End Sub


Grüsse Mark


Antwort 5 von struppi

Hallo
Das geht doch ganz leicht über die Prüfzeit festzustellen.
Ein aktives Laufwerk wird länger geprüft wie ein gesperrtes.

on error resume next
zeit1 = time()
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive("A:")

test = d.IsReady
test = d.IsReady
test = d.IsReady
test = d.IsReady
test = d.IsReady
zeit2 = time()

if dateDiff("s", zeit1 , zeit2) > 1 then
Msgbox " Laufwerk ist aktiv"
else
Msgbox "Laufwerk ist abgeschalten"
end if
gruß struppi

Antwort 6 von Rainer Stocher

@struppi
Erst mal: Vielen Dank!!!
Dein Vorschlag klingt logisch, ich werds probieren. Aber ich vermute, dass dann die Prüfroutine "übergebührlich" lange dauert (etwa so lange wie wenn man versehentlich im Explorer auf das LW klickt ?!), das Script läuft bei uns nämlich "anläßlich" des Login.
Also mal sehen. Ich teile Dir das Ergebnis mit.
greetings rainer

Antwort 7 von Rainer Stocher

@struppi
habs probiert - es klappt leider nicht so. Aber wegen einem ganz anderen Phänomen wie ich vermutete (Zeitverhalten beim Anmelden).
Und zwar macht es, zumindest unter Windows98, überhaupt keinen Unterschied, ob ein Diskettenlaufwerk im Bios disabled ist oder nicht. Erst mal wird in jedem Fall das Laufwerk als Buchstabe gefunden...
mittels:
Set daufl = fso.Drives
For Each d in daufl
.
etc.

... das entscheidende jedoch ist, dass das Antwortverhalten mittels:
d.IsReady
völlig identisch ist. D.h. man merkt keinen zeitlichen Unterschied zu einem PC mit einem Laufwerk welches im Bios enabled ist.
Deine Idee war aber trotzdem wirklich gut!!!

greetings rainer

Antwort 8 von struppi

Hallo Rainer
Das ist aber sehr merkwürdig. Unter Windows98 habe ich das ja getestet. Bei mir funkt. das tadelos. So wie der Code oben steht dauert die Abfrage bei deaktiviertem Laufwerk vielleicht 20 millisekunden. Und bei aktivem Laufwerk ist ein ca. 2 Sekunden langes Rappeln des Laufwerkes zu hören. (Was allerdings ein bischen blöd ist wie Du schon richtig eingewendet hast.)Oder hörst Du bei Deinem Rechner nichts?
Vielleicht hängt es auch mit der Hardware zusammen...naja egal.
Wenn mir noch was Gescheiteres einfällt melde ich mich wieder.
Gruß struppi


Antwort 9 von MixMax

das script mit isready wird aber das diskettenlaufwerk auch als nicht ready anzeigen wenn einfach keine diskette drin ist. Vielleicht kann man das über die Kapazität rausfinden, 1,44M oder was anderes... gerade keine möglichkeit was auszuprobieren.

Antwort 10 von struppi

Hi Mix Max
Ne das mit dem ready ist egal.Es geht nur um die Zeit.Der Befehl dient nur dazu das Diskettenlaufwerk zu beschäftigen. Kann auch ein anderer Befehlsein zb. Nummer = drive.SerialNumber.


Aber ich habe noch was anderes rausgefunden wenn man mit Shell den Dos-Befehl Format a: an das Laufwerk schickt und die Ausgabe in eine Datei umleitet bekommt man total unterschiedliche Ergebnisse in den Dateien:

Inhalt der Testdatei bei deaktiv A:
-----------------------------------

Neue Diskette in Laufwerk A: einlegen

und anschlieáend die EINGABETASTE drcken...a



Bestehendes Datentr„gerformat wird geprft.

Formatierung 180 KB

2 Prozent formatiert.

5 Prozent formatiert.

7 Prozent formatiert.

10 Prozent formatiert.

12 Prozent formatiert.

15 Prozent formatiert.

17 Prozent formatiert.

20 Prozent formatiert.

22 Prozent formatiert.

25 Prozent formatiert.

27 Prozent formatiert.

30 Prozent formatiert.

32 Prozent formatiert.

35 Prozent formatiert.

37 Prozent formatiert.

40 Prozent formatiert.

42 Prozent formatiert.

45 Prozent formatiert.

47 Prozent formatiert.

50 Prozent formatiert.

52 Prozent formatiert.

55 Prozent formatiert.

57 Prozent formatiert.

60 Prozent formatiert.

62 Prozent formatiert.

65 Prozent formatiert.

67 Prozent formatiert.

70 Prozent formatiert.

72 Prozent formatiert.

75 Prozent formatiert.

77 Prozent formatiert.

80 Prozent formatiert.

82 Prozent formatiert.

85 Prozent formatiert.

87 Prozent formatiert.

90 Prozent formatiert.

92 Prozent formatiert.

95 Prozent formatiert.

97 Prozent formatiert.

100 Prozent formatiert.

Formatierung beendet.

BOOT-Sektor kann nicht geschrieben werden.

Formatierung beendet.

Eine weitere Diskette formatieren (J/N)?

Jetz Inhalt der TestDatei bei aktivem A:
--------------------------------------

Neue Diskette in Laufwerk A: einlegen

und anschlieáend die EINGABETASTE drcken...a



Bestehendes Datentr„gerformat wird geprft.

Eine weitere Diskette formatieren (J/N)

---------------------------------------
Den Dateiinhalt braucht man noch nicht mal richtig auslesen. Ein "len(string)" nach readAll ist genug Prüfung.
Ich denke die Methode ist ausbaufähig. (Vielleicht auch mit einem anderen/geeigneteren DOS Befehl)

gruß struppi

Antwort 11 von struppi

Hallo
Hier noch das Script das die Idee von obigen Beitrag umsetzt.(Getestet auf 230MMX Win98)


Msgbox FlopiTest("A")

function FlopiTest(Laufwerk)

set fso = CreateObject("Scripting.FileSystemObject")
set wshshell = CreateObject("WScript.Shell")

Flopi = Laufwerk & ":"
ausgabe = "C:Ausgabe.bat"
eingabe = "C:Eingbabe.bat"
Befehl = "Format " & Flopi

set d = fso.GetDrive(Flopi)
test = d.isReady

if test = false then

set IFile = fso.createTextfile(eingabe,true)
Ifile.writeline
Ifile.writeline "N"

Proc = wshshell.Run("%comspec% /c " & Befehl & " < " & eingabe & " > " & ausgabe ,0,true)

set Datei = fso.GetFile(ausgabe)
Groesse = FormatNumber(Datei.size)
if Groesse > 500 then
Meldung = "Laufwerk ist nicht aktiv"
else
Meldung = "Laufwerk ist aktiv"
end if
else
Meldung = "Laufwerk ist aktiv/ Diskette im Laufwerk"
end if
FlopiTest = Meldung
end Function
---------------------------------------
Nur damit obiger Beitrag vollständig ist...

gruß struppi

Antwort 12 von struppi

Gibts das ? Jetzt sehe ich erst mal das die Anfrage vom Juli ist, kein Wunder das sich niemand zu Wort meldet...


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: