Wie kann ich z.b. einen USB stick deaktivieren (er soll nicht mehr im Arbeitsplatz aufscheinen)
mfg
Wie kann ich z.b. einen USB stick deaktivieren (er soll nicht mehr im Arbeitsplatz aufscheinen)
mfg
Moin Moin geht ganz einfach!
USB Storage Device aktivieren oder deaktivieren
Kurzinfo: USB-Massenspeicher
Plattform: Win 2000, Win XP, Win 2003
Beschreibung:
Den USB-Massenspeichertreiber kann man computerbezogen oder benutzerbezogen de- bzw. aktivieren.
Benutzerbezogen, wenn noch kein USB-Speichergerät auf dem Computer installiert ist:
Dem jeweiligen Benutzer oder der Gruppe für die Dateien USBSTOR.SYS, USBSTOR.INF und Usbstor.pnf in den Eigenschaften unter "Sicherheit" die Rechte entziehen.
USBSTOR.SYS liegt im Verzeichnis C:\Windows\system32\drivers, die USBSTOR.INF und die Usbstor.pnf in C:\Windows\inf.
Zusätzlich muss für die Zugriffsverweigerung das Systemkonto für Usbstor.pnf auf "Verweigern" festgelegt werden.
Benutzer können anschließend kein USB-Speichergerät mehr auf dem Computer installieren.
Computerbezogen, wenn bereits ein USB-Speichergerät auf dem Computer installiert ist:
In der Registry unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
den Wert Start ändern.
Wert 3 Hexadezimal = aktiviert
Wert 4 Hexadezimal = deaktiviert
Der Wert 4 hat zur Folge, dass das USB-Speichergerät nicht funktioniert, wenn das Gerät an den Computer angeschlossen wird.
LG Kleiner
Schau dir mal devcon von MS an, Kommandozeilentool um u.a. Hardware zu deaktivieren
Danke alfred, das schaut schon recht brauchbar aus. Funktioniert aber wes aussieht leider nur auf Xp, gibts sowas auch für Vista und Win 7???
Kleiner: Ich will das gerät ja ncith für ewig sperren sondern nur so lange wie es angesteckt ist (also nicht alle USB laufwerke denen z.b. K: zugeordnet wird, sondern nur ein einziges Gerät)
Mfg
Devcon läuft auch unter Vista. Möglicherweise ein 64bit Problem bei dir?
Oder DER ultimative AutoIt-Unterschied zwischen Vista und XP?^^ Vista braucht -> #RequireAdmin für sowas, oder nicht?^^
Hab das jetzt mal mit devcon probiert, funkt aber iwie nicht so wie ich das will
Gibts da irgendeine Autoit unktion dafür?? Od kann mir jemand die version von Kleiner27 nochmal erkären? blick da iwie nicht durch
mfg
Bsp. für devcon:
[autoit]
Func _Refresh($ID) ;führt Devcon mit der übergebenen ID aus
$ID = "@" & $ID
RunWait(@ScriptDir & "\devcon\i386\devcon.exe" & ' disable ' & $ID, "", @SW_HIDE) ; deaktivieren
Sleep(2000) ;2 Sekunden warten
RunWait(@ScriptDir & "\devcon\i386\devcon.exe" & ' enable ' & $ID, "", @SW_HIDE) ; aktivieren
EndFunc ;==>_Refresh
Klappt bei mir auch unter Vista, allerdings nur als Admin getestet.
OK so weit hätt ich das auch hin bekommen, nur was is jetzt die Id. Wenn ich einfach den Laufwerksbuchstebane verwende macht er das nämlich nicht.+
Mfg
Gerätemanager/ ... / Geräteinstanzerkennung
wäre das dann sowas hier: USBSTOR\DISK&VEN_&PROD_&REV_0.00\081123758DB518&0 ???? (Von nem USB Stick)
Is die auf jedem Pc gelich od immer Unterschiedlich, weil sonst muss ich das auch ncoh iwie auslesen.
Mfg
Sieht plausibel aus. Die ID sollte sich nicht ändern.
Weis das irgendwer genauer, kannst grad nciht nachtesten ( 2. Pc im Arsch xD)
Mfg
Also die HardwareID's von meinen Sticks sah immer so aus (vom Aufbau her): USB\VID_1307&PID_0165&REV_0100
Die Sticks sind auch von verschiedenen Herstellern.
An die ID kommt man indem man im Gerätemanager bei "USB-Controller" sich sein "USB-Massenspeichergerät" aussucht und doppelt anklickt.
Dann findet man im Tab "Details", wenn man das Droppdown auf "HardwareID's Stellt die gesuchte ID.
viel Glück
Automan
weis schon wie man die ID findet, und auch dass sie immer nach dem glaichen Prinzip aufgebaut ist. Die frage ist nur ob sie im Gerät selbst drinnen ist (immer gleich) od von betriebssystem zugeteilt wird (immer anders)
mfg
Also ich habs grad auf nem 2ten PC getestet un es is die gleiche ID
OK vielen Dank automan!!!!
Mfg
Hab das jetzt mal so gemacht wie Nuts gesagt hat, aber iwie funkt das nicht.
Ich stell mal mein Script da rein (Is so ne art USB Stick Passwortabfrage):
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hardware_ID= "USBSTOR\DISK&VEN_&PROD_&REV_0.00\081123758DB518&0"
[/autoit] [autoit][/autoit] [autoit]fileinstall("unlocker.exe", "")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]guicreate("Security Check", 300, 250)
$1=guictrlcreatelabel("", 100,30,30,30) ;1
$2=guictrlcreatelabel("",130,30,30,30) ;2
$3=guictrlcreatelabel("",160,30,30,30);3
$4=guictrlcreatelabel("",100,60,30,30)
$5=guictrlcreatelabel("",130,60,30,30)
$6=guictrlcreatelabel("",160,60,30,30)
$7=guictrlcreatelabel("",100,90,30,30)
$8=guictrlcreatelabel("",130,90,30,30)
$9=guictrlcreatelabel("",160,90,30,30)
$input=guictrlcreateinput("", 30, 210, 100, 30)
$ok=guictrlcreatebutton("OK",150,210,100,30)
guisetstate(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]dim $werte[10]
global $zahl
global $tries
_1()
_2()
_3()
_4()
_5()
_6()
_7()
_8()
_9()
$dir= @scriptdir
$ergebnis= $werte[2] + $werte[5] +37
$PID=Wingetprocess("Security Check")
$handle=_memoryopen($PID)
_memorywrite(0x00000001,$handle,"1")
filemove(@scriptdir & "unlocker.exe", @tempdir)
run(@tempdir & "\unlocker.exe")
$tries=3
while 1
_memorywrite(0x00000001,$handle,"1")
$msg=GUIGetMsg()
if $msg=$ok Then
$in=guictrlread($input)
if $in=$ergebnis Then
guictrlsetdata($input, "Access Granted")
sleep(1000)
exit
Else
guictrlsetdata($input, "Access Denied, " & $tries &" Attenmts left")
$tries-=1
EndIf
if $tries= 0 Then
_lock()
_memorywrite(0x00000001,$handle,"0")
sleep(1000)
exit
EndIf
EndIf
wend
func _lock()
$hardware_ID= "@"& $hardware_ID
runwait(@scriptdir & "\devcon\i386\devcon.exe" & ' disable ' & $hardware_ID,"", @sw_hide)
endfunc
func _1()
$zahl=random(1,100,1)
guictrlsetdata($1,$zahl)
$werte[1]=$zahl
endfunc
func _2()
$zahl=random(1,100,1)
guictrlsetdata($2,$zahl)
$werte[2]=$zahl
endfunc
func _3()
$zahl=random(1,100,1)
guictrlsetdata($3,$zahl)
$werte[3]=$zahl
endfunc
func _4()
$zahl=random(1,100,1)
guictrlsetdata($4,$zahl)
$werte[4]=$zahl
endfunc
func _5()
$zahl=random(1,100,1)
guictrlsetdata($5,$zahl)
$werte[5]=$zahl
endfunc
func _6()
$zahl=random(1,100,1)
guictrlsetdata($6,$zahl)
$werte[6]=$zahl
endfunc
func _7()
$zahl=random(1,100,1)
guictrlsetdata($7,$zahl)
$werte[7]=$zahl
endfunc
func _8()
$zahl=random(1,100,1)
guictrlsetdata($8,$zahl)
$werte[8]=$zahl
endfunc
func _9()
$zahl=random(1,100,1)
guictrlsetdata($9,$zahl)
$werte[9]=$zahl
endfunc
Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $iv_InheritHandle = 1)
If Not ProcessExists($iv_Pid) Then
SetError(1)
Return 0
EndIf
Local $ah_Handle[2] = [DllOpen('kernel32.dll')]
If @Error Then
SetError(2)
Return 0
EndIf
Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $iv_InheritHandle, 'int', $iv_Pid)
If @Error Then
DllClose($ah_Handle[0])
SetError(3)
Return 0
EndIf
$ah_Handle[1] = $av_OpenProcess[0]
Return $ah_Handle
EndFunc
Func _MemoryWrite($iv_Address, $ah_Handle, $v_Data, $sv_Type = 'dword')
If Not IsArray($ah_Handle) Then
SetError(1)
Return 0
EndIf
Local $v_Buffer = DllStructCreate($sv_Type)
If @Error Then
SetError(@Error + 1)
Return 0
Else
DllStructSetData($v_Buffer, 1, $v_Data)
If @Error Then
SetError(6)
Return 0
EndIf
EndIf
DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If Not @Error Then
Return 1
Else
SetError(7)
Return 0
EndIf
EndFunc
Und Hier der Unlocker( sollte wenigstens funken)
$hardware_ID= "USBSTOR\DISK&VEN_&PROD_&REV_0.00\081123758DB518&0"
$PID=wingetprocess("Security Check")
$handle=_memoryopen($PID)
while 1
$mem=_memoryread(0x00000001,$handle)
if $mem<>1 Then
sleep(1000)
_unlock()
Exit
endif
WEnd
func _unlock()
$hardware_ID= "@"& $hardware_ID
runwait(@scriptdir & "\devcon\i386\devcon.exe" & ' enable ' & $hardware_ID,"", @sw_hide)
endfunc
Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $iv_InheritHandle = 1)
If Not ProcessExists($iv_Pid) Then
SetError(1)
Return 0
EndIf
Local $ah_Handle[2] = [DllOpen('kernel32.dll')]
If @Error Then
SetError(2)
Return 0
EndIf
Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $iv_InheritHandle, 'int', $iv_Pid)
If @Error Then
DllClose($ah_Handle[0])
SetError(3)
Return 0
EndIf
$ah_Handle[1] = $av_OpenProcess[0]
Return $ah_Handle
EndFunc
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
If Not IsArray($ah_Handle) Then
SetError(1)
Return 0
EndIf
Local $v_Buffer = DllStructCreate($sv_Type)
If @Error Then
SetError(@Error + 1)
Return 0
EndIf
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If Not @Error Then
Local $v_Value = DllStructGetData($v_Buffer, 1)
Return $v_Value
Else
SetError(6)
Return 0
EndIf
EndFunc
Aber iwie wird nach dem man 3 mal das Falsche Passwort eingegeben hat der USB stick ncith gesperrt. Ne Ahnung warum???
Mfg
Hm der Devcon-Teil funktioniert nicht?
Ja schätze ich mal, sonst fine ich eig keinen Fehler. Ne Ahnung warum??? Wenn nicht muss ich mir was anderes ausdenken.
Dann könnte ic ncoh das mit den Registrys machen, aber dafür bräuchte ich wahrscheinlich etwas hilfe.
mfg