drivexslow
Goto Top

USB Stick Speicher sperren mit Ausnahme unter Windows 7 64 - baugleiche USB Sticks differenzieren!

Hallo zusammen,

ich habe folgendes Problem, welches ich mit stundenlanger Suche und Testen nicht erfolgreich lösen konnte:

Aufgabe:
Es soll an einem nicht im Netzwerk laufende Windows 7 64bit PC kein USB Stick (oder USB Festplatte) erlaubt werden,
Ausnahme: Ein ganz bestimmter vorher bekannter Stick soll erlaubt sein. Ein baugleicher aber anderer Stick (gleiche Hersteller und Product ID) soll
wie alle anderen Sticks ebenfalls gesperrt sein!

Hintergrund:
Es soll dieser eine besondere Stick lediglich auf dem lokalen Windows 7 64bit PC Lese- und Schreibrechte erhalten,
außerhalb soll der Stick nur ausgelesen werden können, damit keine schadhafte Software auf den Stick und somit auf den PC gelangen kann.

Bisherige mangelhafte Lösung:
1) Es besteht die Möglichkeit unter Windows 7 mit Gruppenrichtlinien die Verwendung von USB Sticks komplett zu untersagen. - Am Thema vorbei!
2) Mit hilfreichen Tools wie USB Waechter lässt sich sogar die Installation eines neuen Treibers bei Anschluss des USB Sticks verbieten,
es sei denn man lässt es manuell mit dem Tool zu. Wird jedoch ein baugleicher USB Stick verwendet (gleiche Hersteller und Product ID)
wird dieser ebenfalls genehmigt, da der Treiber ja bereits installiert ist. Genau das ist das Problem!
Gibt es irgendein Tool oder eine Möglichkeit, wirklich JEDEN Stick zu differenzieren und nur genau 1 bestimmten Stick zuzulassen?

Ich bin für jede Anregung dankbar und entschuldige,
wenn mein IT Wissen noch begrenzt zu sein scheint...

Vielen Dank

Content-Key: 339972

Url: https://administrator.de/contentid/339972

Printed on: April 27, 2024 at 10:04 o'clock

Member: emeriks
emeriks Jun 07, 2017 at 12:14:47 (UTC)
Goto Top
Hi,
Hintergrund:
Es soll dieser eine besondere Stick lediglich auf dem lokalen Windows 7 64bit PC Lese- und Schreibrechte erhalten,
außerhalb soll der Stick nur ausgelesen werden können, damit keine schadhafte Software auf den Stick und somit auf den PC gelangen kann.
Diesen Punkt wirst Du nur bewerkstelligen können, wenn der Stick verschlüsselt wird.
Aber selbst kann jemand dann an einem anderen PC mit Kenntnis des Passworts und der Verschlüsselung den Stick mounten und verändern.

E.
Member: H41mSh1C0R
H41mSh1C0R Jun 07, 2017 at 12:21:28 (UTC)
Goto Top
Servus,

es gibt Sticks mit HW Schalter um den Stick zum RO zu machen. Wenn es sich um angewiesene Administratoren handelt und die mit solchen Sticks umgehen können wär das vielleicht eine Lösung. Wenn der Stick durch DAU Hände wandert wird das sicher nicht viel bringen.

VG
Member: DriveXSlow
DriveXSlow Jun 07, 2017 at 12:28:49 (UTC)
Goto Top
Leider wird es sich um "DAU" handeln.
Wofür steht "RO"? Und was bewirkt so ein HW Schalter Stick?
Member: emeriks
emeriks Jun 07, 2017 at 12:33:59 (UTC)
Goto Top
RO - Read Only
HW - Hardware

HW-Schalter meint: Per physischem Schalter wird der Stick schreibgeschützt, so wie früher bei den Disketten.
Member: Pedant
Pedant Jun 07, 2017 at 12:35:16 (UTC)
Goto Top
Hallo DriveXSlow,

Zitat von @DriveXSlow:
Es soll dieser eine besondere Stick lediglich auf dem lokalen Windows 7 64bit PC Lese- und Schreibrechte erhalten,
außerhalb soll der Stick nur ausgelesen werden können

Den einen Stick auf einem präparierten System exklusiv zuzulassen, lässt sich wahrscheinlich irgendwie bewerkstelligen,
aber wie soll es gehen, dass alle anderen Rechner auf der Welt auf den Stick nicht schreiben können oder hab ich Dich falsch verstanden?

emeriks' Ansatz mit Verschlüsselung und Kennwort scheint mir durchaus geeignet.
Vielleicht gibt es auch eine Möglichkeit für Lesen und Schreib/Lesen andere Kennwörter zu setzten und diese dann unterschiedlich geheimzuhalten.

Mal 'ne allgemeine Nachfrage:
Wie sicher muss das denn funktionieren, also welche Art der Bedrohungslage zwischen Fehlbedienung hin zu Spionage sollte es standhalten?

Gruß Frank
Member: DriveXSlow
DriveXSlow Jun 07, 2017 at 12:43:13 (UTC)
Goto Top
Hallo Frank,
Danke für die Antwort.
Es soll lediglich IT fernen Menschen die Möglichkeit gegeben werden,
von diesem besagten PC Daten zu kopieren und sich auf ihren Rechner zu sichern.
Es soll davon ausgegangen werden, dass niemand böswillige Absichten an Tag legt, d.h. es muss nicht absolut unumgehbar sicher sein, es soll
lediglich Virengefahr durch Ungeschicktheit bzw. Daten fremder abhalten.
Da fällt mir noch eine ganz wichtige Info ein:
Auf dem PC hat der USB Stick zwar Lese-und Schreiberechte, allerdings läuft dort ein
nicht minimier-bares Anwenderprogramm, welches als einzige Möglichkeit zu sehen ist, auf den USB Stick
zuzugreifen. D.h. Windows ist auf diesem PC für den Anwender nicht bedienbar- Einstellungen oder Änderungen an den Rechten des USb Sticks sind somit durch den User nicht möglich.
Member: H41mSh1C0R
H41mSh1C0R Jun 07, 2017 at 12:46:53 (UTC)
Goto Top
Vielleicht könnte DeviceWatch (von itWatch) eine Option sein. Bei uns wird das eingesetzt um die Ports sauber zu halten.
KA ob man da auch RO konfigurieren kann für eine Range von PCs.
Member: DriveXSlow
DriveXSlow Jun 07, 2017 at 12:50:04 (UTC)
Goto Top
Und noch eine Info hierzu:

Dass der USB Stick nur auf diesem einen Rechner freigegeben ist und auf alleine fremden Rechner nur Leserechte besitzt habe ich folgendermaßen umgesetzt:

http://www.com-magazin.de/praxis/usb-stick/so-schuetzen-usb-stick-61525 ...
und dann
http://www.com-magazin.de/praxis/usb-stick/so-schuetzen-usb-stick-61525 ...

Mir ist bekannt, dass der Stick auf fremden Rechners auch verändert und beschrieben werden kann, wenn dort als neuer Besitzer ein
anderer eingetragen wird. Dieser Vorgang ist aber als IT Kenntnis einzustufen, die die späteren Anwender dieses Sticks nicht inne haben.
Mitglied: 114685
114685 Jun 07, 2017 updated at 13:02:24 (UTC)
Goto Top
Hi,

es gäbe vielleicht eine Möglichkeit, einen ganz bestimmten Stick durch seine einmalige Seriennummer zu identifizieren:
In der Registry findest du sie als 1. Unterschlüssel zum entsprechenden Device-Eintrag (hier ein TOSHIBA 32GB-USB 3.0-Stick)
unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0930&PID_1408

Das ist nicht die Volume-Seriennummer, die beim Formatieren erzeugt wird und sich ändern ließe, und auch nicht die Volume-Seriennummer, die bei
fsutil fsinfo ntfsinfo LW: angezeigt wird.

Vielleicht kannst du damit was anfangen.

Edit:
Einfacher, aber mit dem gleichen Ergebnis geht es damit:
USBDeview von nirsoft

Gruß
Member: DriveXSlow
DriveXSlow Jun 07, 2017 updated at 13:49:17 (UTC)
Goto Top
Ich habe zwei baugleiche USB Sticks.
Die beiden unterscheiden sich lediglich in der Container-ID.
Der 1. Unterschlüssel hingegen ist auch hier gleich.
Oder meintest du diese?
Wenn ja, es wäre eine Möglichkeit, hierüber den Stick eindeutig zu identifizieren, allerdings
habe ich keinen Schimmer, wie das im Detail gehen soll.
Hilfe Hilfe.

Keiner noch eine gute Idee?
Ich bin da langsam echt am verzweifeln.
Mit den Container IDs lassen sich USB Devices eindeutig differenzieren,
aber wie sperrt man mit dieser Information bereits die Installation der Treiber bzw. bei bereits installiertem Treiber sperrt
den angeschlossenen USB Stick gänzlich?
Mitglied: 114685
114685 Jun 07, 2017 at 14:12:04 (UTC)
Goto Top
Die beiden unterscheiden sich lediglich in der Container-ID.
Der 1. Unterschlüssel hingegen ist auch hier gleich.

Die Container-ID wird wohl vom System erzeugt.
Der Unterschlüssel ist bei den Toshiba-Sticks, die ich hier hatte, unterschiedlich. Er wird auch von den Tools als Seriennummer ausgewiesen, wie z. B. bei dem verlinkten von nirsoft und bei HWInfo.

Möglich wäre, dass nicht alle Firmen eindeutige IDs in ihren Sticks vergeben, dass du den gleichen Stick an verschiedenen Ports betrieben hast, oder dass ich mich irre. Ausschließen kann ich das nicht. face-smile

Wenn du die Device-ID des Gerätes kennst, kannst du die Installation des Treiber verhindern:
Treiberinstallation verhindern

Sperren könntest du ihn möglicherweise mit einer Zugriffsverweigerung für auf den Registry-Key mit entsprechenden Ausnahmen.

Gruß
Member: DriveXSlow
DriveXSlow Jun 07, 2017 at 14:36:13 (UTC)
Goto Top
"Wenn du die Device-ID des Gerätes kennst, kannst du die Installation des Treiber verhindern:
Treiberinstallation verhindern "

Meinst du die folgende ID?
Die Hardware-ID der beiden Sticks ist gleich:
Stick 1: USB\VID_0781&PID_5581&REV_0100
Stick 2: USB\VID_0781&PID_5581&REV_0100

Mit Hilfe dieser Nummer macht genau das scheinbar das Tool USB Waechter. Es gilt diese beiden Sticks jedoch zu unterscheiden.
Unterschiedlich hingegen ist nur die Container ID, welche auch nach Formatierung NTFS gleich bleibt:
Stick 1: {488dc1c4-fe2a-5ac8-a861-63d1781f2a41}
Stick 2: {64066033-2393-557d-86a6-e94f01c53ea1}
Member: StefanKittel
StefanKittel Jun 07, 2017 at 14:45:54 (UTC)
Goto Top
Hallo,

ich würde das mit einem 2 stuffigen proprietär System lösen.

1. Mit den üblichen Verdächtigen werden alle anderen USB Datenträger gesperrt.
2. Jede Form von Autostart ausschalten.

3. Eine Software (Windows Dienst) prüft jeden angeschlossen Datenträger auf eine Kennung.
Wenn diese nicht da ist, wird der Datenträger sofort ausgeworfen.

4. Auf dem Stick ist ein Container der automatisch gemountet wird.
Z.B. VHD, veracryct, etc.

Wie machst Du Backups?

Stefan
Member: DriveXSlow
DriveXSlow Jun 07, 2017 at 15:02:18 (UTC)
Goto Top
Ich mache gar keine Backups. Das ist hier auch nicht notwendig. Es soll lediglich die
Möglichkeit bestehen, einmal mit einem Stick Daten von dem PC mit Hilfe einer im Vordergrund laufenden Anwendung (Windows nicht mehr bedienbar) Daten abzuziehen.

Damit ich das richtig verstehe:
1. Alle anderen USB Datenträger sperren z.B. mit Tool USB Waechter über die Device-IDs
2. Autostart ausschalten- wozu`? Leider verwende ich den Autostart, damit der USB Stick in der Anwendung verwendbar wird- Kann aber doch auch eingeschaltet bleiben, oder?
3. Welche Software bzw. welcher Dienst kann die Kennung (Container-ID) prüfen? Und wie kann man das einmalige Auswerfen des Devices
veranlassen?
4. Wie veranlasse ich das? Werden Container nicht automatisch gemountet, wenn sie angemeldet werden? Ist eine Verschlüsselung denn
unbedingt notwendig oder ginge es auch so? Die Daten sind nicht sensibel, die sich auf dem Stick befinden können.
Member: StefanKittel
StefanKittel Jun 07, 2017 at 15:05:09 (UTC)
Goto Top
Hallo,

VHD ist nicht verschlüsselt.
War nur eine Idee um gleich 2 Fliegen zu fangen.

Für dieses Konzept muss man eine richtige Software schreiben die als Dienst läuft.
Ich kenne nichts fertiges was so etwas kann.

Stefan
Member: DriveXSlow
DriveXSlow Jun 07, 2017 at 15:18:01 (UTC)
Goto Top
Oh Nein,
sowas habe ich mir schon gedacht.
Verstehe ich allerdings nicht,
es ist doch ein übliches Problem,
dass wirklich nur ganz bestimmte (eigens ausgehändigte und nicht nach kaufbare)
USB Sticks zur Verwendung zugelassen sind..
Mit Windows Programmierung kenne ich mich leider gar nicht aus.
An sich hört sich der Weg aber plausible an,
wenn ich diesen begehe, werde ich es hier berichten.
Member: Pedant
Pedant Jun 07, 2017 at 21:11:23 (UTC)
Goto Top
Hallo DriveXSlow,

im Deinem Fall müsste es nicht unbedingt ein eigens programmierter Dienst sein.
Es reicht vielleicht auch ein "normales" Programm und eventuell sogar nur ein Skript, das hinter Deinem nicht-minimierbaren Anwenderprogramm rumgammelt und daher geschützt ist, es sei denn jemand holt es mit [Alt]+[Tab] in den Vordergrund oder schießt es mit dem Taskmanager ab.

Die "ContainerID" habe ich in der Registry gefunden, aber irgendwie keinen Schlüssel, der sich ändert wenn der zugehörige USB-Stick nicht angeschlossen ist, insofern wüsste ich nicht wie man den Schlüssel sinnvoll abfragen könnte.
<code type="plain>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Intenso&Prod_Slim_Line&Rev_\16080200010402&0]
"ContainerID"="{4178603a-fd2e-5d6c-9bdd-66de19b2037a}"
Ich habe das daher nicht weiter verfolgt.


Mit wmic.exe logicaldisk where "DriveType=2" get DeviceID, VolumeSerialNumber
bekommt man den Laufwerksbuchstaben und eine Seriennummer aller angeschlossenen Wechseldatenträger aufgelistet.
Die Seriennummer ist eine Nummer, die sich beim Formatieren ändert. Ich vermute daher, dass es eine Zufallsnummer ist, die aber mit sehr hoher Wahrscheinlichkeit nicht doppelt vorkommen wird im Pool der vorhandnen USB-Sticks, da sie aussieht als wäre sie eine achtstellig Hexadezimalzahl.

Auf der Basis habe ich ein Skript geschrieben.
Es ist nicht elegant, da es nicht durch das Anstecken eines Sticks ausgelöst wird, sondern in einem vorgegebenen Intervall nach Wechseldatenträgern sucht, aber auch wenn man das intervall=0 setzt, erzeugt das Skript kaum CPU-Last.

USB-Ueberwachung.cmd
@echo off
setlocal EnableDelayedExpansion
title USB-Ueberwachung

:config
set intervall=2
set MeinStick=3E2A2A6D
REM Die Nummer kann so ermittelt werden: wmic logicaldisk where "DriveType=2" get DeviceID, VolumeSerialNumber  
REM Beim Formatieren wird sie neu generiert und muss erneut ausgelesen werden.

:loop
cls
echo(
echo USB-Ueberwachung ist gestartet.

for /f "skip=1 tokens=1,2" %%i in ('2^>nul wmic.exe logicaldisk where "DriveType=2" get DeviceID^, VolumeSerialNumber') do (  
	set letter=%%i
	set volsn=%%j
	REM volsn könnte leer (undefiniert) sein oder nur eine Absatzmarke oder eine Nummer enthalten
	if defined volsn if "!volsn:~1!" EQU "" set volsn=  
	if "!volsn!" NEQ "" (  
		if "!volsn!" NEQ "!MeinStick!" call :auswerfen !letter! !volsn!  
		if "!volsn!" EQU "!MeinStick!" call :nichtauswerfen !letter! !volsn!  
	)
)

:abwarten
if defined intervall timeout %intervall%
if not defined intervall echo %time%
goto loop

:ende
exit /b

:nichtauswerfen
echo(
echo Mein Stick %1 hat die SN %2
echo Der darf bleiben.
goto :eof

:auswerfen
echo(
echo Ein fremder Stick %1 mit der SN %2 wurde erkannt.
echo Er wird jetzt ausgeworfen...
REM **************************************
REM Hier kommt ein externes Tool ist Spiel
REM http://www.freeeject.com/
REM Die Ausgabe des Tool wird mit ">nul 2>&1" unterdrückt.  
>nul 2>&1 FreeEject.exe %i
REM **********************
goto :eof

Ähnlichkeiten mit rubbermans Skript sind rein zufällig.

Gruß Frank
Mitglied: 114685
114685 Jun 07, 2017 updated at 22:12:25 (UTC)
Goto Top
Hi,

die Angaben, die ich zur Seriennummer gemacht habe, scheinen nicht mit der tatsächlichen Seriennummer identisch zu sein, auch das Nirsoft-Tool liest genau diese Werte als "Seriennummer" aus. Ich habe das mal mit einem anderen Tool ausgelesen, das die Info offenbar direkt aus der Firmware holt; das Ergebnis ist in der Registry nirgendwo zu finden.

Die "ContainerID" habe ich in der Registry gefunden, aber irgendwie keinen Schlüssel, der sich ändert wenn der
zugehörige USB-Stick nicht angeschlossen ist, insofern wüsste ich nicht wie man den Schlüssel sinnvoll abfragen
könnte.

Versuch's mal mit
fsutil fsinfo ntfsinfo LW:
Da steht nur eine NTFS-Volumeseriennummer, die sich nicht ändert, wenn man einen anderen Port verwendet und die ebenfalls nicht in der Registry zu finden ist. Wenn das Drive nicht angeschlossen ist, zeigt dir fsutil den 'speziellen erhobenen Finger' face-smile
fsutil benötigt Adminrechte.

Edit:
Die Container-ID ändert sich nicht, wenn das Device an einem anderen Rechner angeschlossen wird, die NTFS-Volumeseriennummer aber wohl.

Die Volume-Seriennummer, die beim Formatieren erzeugt wird, wird durch einen Zufallszahlengenerater festgelegt, der irgendwie mit der RTC-Zeit initialisiert wird, soweit ich mich recht entsinne. face-smile

Gruß
Member: Pedant
Pedant Jun 07, 2017 at 22:22:11 (UTC)
Goto Top
Hallo hugonatter,

Zitat von @114685:
Versuch's mal mit
fsutil fsinfo ntfsinfo LW:
Da steht nur eine NTFS-Volumeseriennummer, die sich nicht ändert, wenn man einen anderen Port verwendet und die ebenfalls nicht in der Registry zu finden ist. Wenn das Drive nicht angeschlossen ist, zeigt dir fsutil den 'speziellen erhobenen Finger' face-smile
fsutil hattest Du schon erwähnt, habe ich aber jetzt erst gesehen.

C:\>fsutil fsinfo ntfsinfo h:
NTFS-Volumeseriennummer :          0x01d1dc764faf3870

C:\>fsutil fsinfo volumeinfo h:
Volumeseriennummer : 0x4faf3870

C:\>wmic logicaldisk where "DriveType=2" get DeviceID, VolumeSerialNumber
DeviceID  VolumeSerialNumber
H:        4FAF3870
Bei meinen Stick (H: ) ist:
NTFS-Volumeseriennummer != Volumeseriennummer
Volumeseriennummer = VolumeSerialNumber

Aber mal so gesehen:
Ob es jetzt die echte Seriennummer ist, die der Hersteller vergibt oder eine Zufallsnummer von Windows, ist konzeptionell zunächst zweitrangig.
So oder so müsste man sie vergleichen und dazu in Intervallen pullen, es sei denn es fällt einem ein besserer Auslöser als ein Timeout ein.
Vielleich gibt es in der Aufgabenplanung einen passenden Ereignis-Trigger?

Gruß Frank

PS: Wie kann ich denn den Kindergarten-Smilie vermeiden, wenn ich einen Laufwerksbuchstaben in Klammern schreiben möchte?
(H: ) gerne ohne Leerzeichen, aber bloß nicht mit albernen Emoticons (Hface-smile
Mitglied: 114685
114685 Jun 07, 2017 updated at 23:12:52 (UTC)
Goto Top
Hallo, Frank,

Die NTFS-Volumeseriennummer wird möglicherweise aus der MFT generiert.

Vielleich gibt es in der Aufgabenplanung einen passenden Ereignis-Trigger?

Ja, aber Minimum wohl 5 Minuten. (Trigger > Neu > Erweiterte Einstellungen > Wiederholen jede ...)

den Kindergarten-Smilie vermeiden,
Nimm die geschweifte oder eckige Klammer. face-wink
Oder (H:) 2 x Accent aigu davor und dahinter

Du hattest doch vor Kurzem mal einen Kommentar geschrieben zur Verwendung von Diskpart > list Volume. Darüber kannst du doch auch rausbekommen, ob das Drive angeschlossen ist.

Edit: Habe eben noch was gefunden:
Trigger für USB-Geräte

Gruß
Member: Pedant
Pedant Jun 08, 2017 at 11:13:43 (UTC)
Goto Top
Hallo hugonatter,

Zitat von @114685:
Oder (H:) 2 x Accent aigu davor und dahinter
Ja, vielen Dank, so funktioniert's.
``(H:)``
Ich dachte ich hätte in meinen persönlichen Einstellungen Smilies ausgeschaltet, finde die Option aber nicht mehr, war wohl in einem anderen Forum.
Sind Administratoren so IT-fremd, dass sie ein ":-)" nicht erkennen und ein "face-smile" als grafische Übersetzung brauchen?
Nennt mich humorlos, aber ich finde die grafischen Smilies albern und lästig.

Zitat von @114685:
Du hattest doch vor Kurzem mal einen Kommentar geschrieben zur Verwendung von Diskpart > list Volume. Darüber kannst du doch auch rausbekommen, ob das Drive angeschlossen ist.
Das Nachsehen, ob ein USB-Stick angeschlossen ist oder nicht, ist ja nicht die Schwierigkeit.
Das geht ja prima mit "Deinem" fsutil und auch mit "meinem" wmic.

Zitat von @114685:
Vielleich gibt es in der Aufgabenplanung einen passenden Ereignis-Trigger?
Ja, aber Minimum wohl 5 Minuten. (Trigger > Neu > Erweiterte Einstellungen > Wiederholen jede ...)
Edit: Habe eben noch was gefunden:
Trigger für USB-Geräte
Ein Zeitintervall-Trigger hatte ich nicht gemeint, aber Dein Link ist ein Volltreffer.
Danke

Das ist leicht umzusetzen und zwar wie folgt:

Laufwerksanschluss-Event

Vorbereitend muss man die zugehörige Protokollierung aktivieren und aktiviert lassen.
Computerverwaltung -> System -> Ereignisanzeige -> Windows-Protokolle -> Microsoft -> Windows -> DriverFrameworks-UserMode -> Betriebsbereit
In der linken Spalte (Baumstruktur) Rechtsklich auf Betriebsbereit -> Protokoll aktivieren.

Aufgabe planen

Computerverwaltung -> System -> Aufgabenplanung -> Aufgabenplanungsbibiliothek -> Einfache Aufgabe erstellen
Name: USB-Überwachung (wahlfrei)
[Weiter]
(x) Bei Protokollierung eines bestimmten Events
[Weiter]
Protokoll: Microsoft-Windows-DriverFrameworks-UserMode/Betriebsbereit
Quelle: DriverFrameworks-UserMode
Ereignis-ID: 2101
[Weiter]
(x) Programm starten
[Weiter]
Programm/Skript: C:\Ordner\USB-Überwachung.cmd (Pfad und Name ist natürlich anzupassen)
Starten in (optional): C:\Ordner\
[Weiter]
[Fertig stellen]

C:\Ordner\USB-Überwachung.cmd
@echo off
setlocal EnableDelayedExpansion
title USB-Ueberwachung

:config
set intervall=2
set MeinStick=5C6D4532
set Logfile=C:\Temp\USB.txt

REM Die Nummer für MeinStick kann so ermittelt werden: wmic logicaldisk where "DriveType=2" get DeviceID, VolumeSerialNumber  
REM Beim Formatieren wird sie neu generiert und muss erneut ausgelesen werden.

:pruefung
if defined Logfile echo %date% %time:~0,-3% Die Wechseldatenträgerprüfung wurde ausgelöst.>> %Logfile%
cls
echo(
echo Alle Wechseldatentraeger werden geprueft.

for /f "skip=1 tokens=1,2" %%i in ('2^>nul wmic.exe logicaldisk where "DriveType=2" get DeviceID^, VolumeSerialNumber') do (  
	set letter=%%i
	set volsn=%%j
	REM volsn könnte leer (undefiniert) sein oder nur eine Absatzmarke oder eine Nummer enthalten
	if defined volsn if "!volsn:~1!" EQU "" set volsn=  
	if "!volsn!" NEQ "" (  
		if "!volsn!" NEQ "!MeinStick!" call :auswerfen !letter! !volsn!  
		if "!volsn!" EQU "!MeinStick!" call :nichtauswerfen !letter! !volsn!  
	)
)

:ende
if defined Logfile echo(>> %Logfile%
REM Im Betrieb muss PAUSE auskommentiert werden, damit die Batch sich selbstätig benden kann.
PAUSE
exit /b

:nichtauswerfen
if defined Logfile echo %date% %time:~0,-3% Der zugelassene USB-Stick %2 ist jetzt als Laufwerk %1 bereit.>> %Logfile%
echo(
echo Mein Stick %1 hat die SN %2
echo Der darf bleiben.
goto :eof

:auswerfen
if defined Logfile echo %date% %time:~0,-3% Ein unzulässiger USB-Stick %2 wird jetzt ausgeworfen.>> %Logfile%
echo(
echo Ein fremder Stick %1 mit der SN %2 wurde erkannt.
echo Er wird jetzt ausgeworfen...
REM **************************************
REM Hier kommt ein externes Tool ist Spiel
REM http://www.freeeject.com/
REM Die Ausgabe des Tool wird mit ">nul 2>&1" unterdrückt.  
REM >nul 2>&1 FreeEject.exe %1
>nul 2>&1 FreeEject.exe I:
if errorlevel 2 (
	if defined Logfile echo %date% %time:~0,-3% ERROR: Ein Fehler trat auf beim Versuch den Datentraeger auszuwerfen.>> %Logfile%
	echo Ein Fehler trat auf beim Versuch den Datentraeger auszuwerfen.
)

REM **********************
goto :eof
Bis auf kosmetische Sachen, also eventuelle Anpassung der echo-Ausgaben, ist die Aufgabe gelöst.

Gruß Frank
Mitglied: 114685
114685 Jun 08, 2017 at 12:24:50 (UTC)
Goto Top
Hi,

Zitat von @DriveXSlow:
Ich bin für jede Anregung dankbar und entschuldige,
wenn mein IT Wissen noch begrenzt zu sein scheint...

Kommt Zeit, kommt Wissen, versprochen.

Mit Computern hat man Zeit, Dinge zu tun, die man ohne sie nicht tun müsste ..

face-smile

Gruß