Hardware deaktivieren

  • Wie kann ich z.b. einen USB stick deaktivieren (er soll nicht mehr im Arbeitsplatz aufscheinen)

    mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • 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

  • 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

    Computers are like Airconditioning. They don´t work with open Windows.

  • 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

    Computers are like Airconditioning. They don´t work with open Windows.

  • 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

    [/autoit]


    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

    Computers are like Airconditioning. They don´t work with open Windows.

  • 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

    Computers are like Airconditioning. They don´t work with open Windows.

  • 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

    Computers are like Airconditioning. They don´t work with open Windows.

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

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.0.0
    Author: myName

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Template AutoIt script.

    [/autoit] [autoit][/autoit] [autoit]

    #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)

    [/autoit] [autoit][/autoit] [autoit]

    guisetstate(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    dim $werte[10]
    global $zahl
    global $tries

    [/autoit] [autoit][/autoit] [autoit]

    _1()
    _2()
    _3()
    _4()
    _5()
    _6()
    _7()
    _8()
    _9()

    [/autoit] [autoit][/autoit] [autoit]

    $dir= @scriptdir

    $ergebnis= $werte[2] + $werte[5] +37
    $PID=Wingetprocess("Security Check")

    [/autoit] [autoit][/autoit] [autoit]

    $handle=_memoryopen($PID)
    _memorywrite(0x00000001,$handle,"1")

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    func _2()
    $zahl=random(1,100,1)
    guictrlsetdata($2,$zahl)
    $werte[2]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _3()
    $zahl=random(1,100,1)
    guictrlsetdata($3,$zahl)
    $werte[3]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _4()
    $zahl=random(1,100,1)
    guictrlsetdata($4,$zahl)
    $werte[4]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _5()
    $zahl=random(1,100,1)
    guictrlsetdata($5,$zahl)
    $werte[5]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _6()
    $zahl=random(1,100,1)
    guictrlsetdata($6,$zahl)
    $werte[6]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _7()
    $zahl=random(1,100,1)
    guictrlsetdata($7,$zahl)
    $werte[7]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _8()
    $zahl=random(1,100,1)
    guictrlsetdata($8,$zahl)
    $werte[8]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _9()
    $zahl=random(1,100,1)
    guictrlsetdata($9,$zahl)
    $werte[9]=$zahl
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Und Hier der Unlocker( sollte wenigstens funken)

    Spoiler anzeigen
    [autoit]


    $hardware_ID= "USBSTOR\DISK&VEN_&PROD_&REV_0.00\081123758DB518&0"
    $PID=wingetprocess("Security Check")
    $handle=_memoryopen($PID)

    [/autoit] [autoit][/autoit] [autoit]

    while 1
    $mem=_memoryread(0x00000001,$handle)
    if $mem<>1 Then
    sleep(1000)
    _unlock()
    Exit
    endif
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    func _unlock()
    $hardware_ID= "@"& $hardware_ID
    runwait(@scriptdir & "\devcon\i386\devcon.exe" & ' enable ' & $hardware_ID,"", @sw_hide)
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Aber iwie wird nach dem man 3 mal das Falsche Passwort eingegeben hat der USB stick ncith gesperrt. Ne Ahnung warum???


    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • 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

    Computers are like Airconditioning. They don´t work with open Windows.