USB CustomiZer - Tool zum einfachen Anpassen eines Datenträgers [Label & Icon zuweisen/ändern]

  • Danke für dein Feedback.

    Ja, kann man, aber wenn man's im Programm festlegt, kann es im Explorer äußerlich nicht mehr so leicht verändert werden, es wird immer wieder zurückgesetzt.

  • Ist jetzt nicht böse gemeint, aber... wieso ein Tool für etwas benutzen, was ich in 60 Sekunden per Hand machen kann?
    Sonst schön gemacht, auch an das Verstecken und Imagekopieren gedacht ;)

    Lg chess

    Edit: Denk auch an solche schönen Virenschutzprogramme (*hust hust* Avira *hust hust*) die die Autorun.inf blocken:P
    Ich weiß nicht, ob das auch die Designsettings betrifft!

  • Hm.... für Faule, Unerfahrene oder unseren EDV-Lehrer^^ Da heißts dann einfach "Unfähig"

    Ok, da hast du schon Recht... Aber auf jedenfall reagierst du gut auf Kritik, die du eigentlich nicht bestätigen kannst... Das ist, vorallem in solchen Bereichen, eine sehr gute Eigenschaft!

    Nur.... das mit dem Virenprogramm ist halt doof.... siehe edit vom letzten Post.

    Lg chess ;)

  • Hi,
    ich habe mal die vielen Leerzeilen rausgenommen. Die Includes brauchst Du jetzt nicht mehr und das Icon ist mit in der Exe-Datei enthalten - Aber erst nach dem Compielen.

    Schau Dir mal die Macros genauer an, da ist noch einiges möglich (@GUI_CtrlId). ;)

    Spoiler anzeigen
    [autoit]


    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=refresh.ico
    #AutoIt3Wrapper_Outfile=USBCustomizer.exe
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #AutoIt3Wrapper_Res_Field=Original Name|USBCustomizer
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #AutoIt3Wrapper_Run_Tidy=y
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #NoTrayIcon
    Opt("GUIOnEventMode", 1)

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

    $ShortName = "USB.CuZ"
    $ProgramName = "USB CustomiZer v0.7b"

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

    $mainwindow = GUICreate($ShortName, 170, 190)
    GUISetOnEvent(-3, "close")
    $programmenu = GUICtrlCreateMenu("Info")
    $aboutitem = GUICtrlCreateMenuItem("About", $programmenu)
    GUICtrlSetOnEvent($aboutitem, "about")
    GUICtrlCreateLabel("Volume:", 6, 20)
    $vol = GUICtrlCreateCombo("", 50, 20, 35, 20)
    refresh()
    $refresh = GUICtrlCreateButton("", 90, 19, 22, 22, 0x0040)
    GUICtrlSetImage($refresh, "USBCustomizer.exe", 0, 0)
    GUICtrlSetOnEvent($refresh, "refresh")
    GUICtrlSetTip(-1, "Refresh")
    GUICtrlCreateLabel("Label:", 15, 50)
    $label = GUICtrlCreateInput("", 50, 50, 100, 20)
    GUICtrlSetTip($label, "The name of the volume (e.g. ""My Stick""[max. 32 characters])")
    GUICtrlCreateLabel("Icon:", 20, 81)
    $icon = GUICtrlCreateInput("", 50, 81, 70, 20)
    $select = GUICtrlCreateButton("...", 125, 80, 22, 22)
    GUICtrlSetOnEvent($select, "_select")
    $create = GUICtrlCreateButton("Create label", 50, 130)
    GUICtrlSetOnEvent($create, "create")

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

    GUISetState(@SW_SHOW)

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

    While Sleep(100)
    WEnd

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

    Func close()
    Exit
    EndFunc ;==>close

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

    Func about()
    MsgBox(64, "About...", $ProgramName & @CRLF & "by Cyrox [BC]" & @CRLF & @CRLF & "Customizes your USB-Stick.")
    EndFunc ;==>about

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

    Func refresh()
    $vols = ""
    $getvols = DriveGetDrive("REMOVABLE")
    GUICtrlSetData($vol, "")
    If Not @error And $getvols <> "" Then
    For $i = 1 To $getvols[0]
    $vols &= StringUpper($getvols[$i]) & "|"
    Next
    GUICtrlSetData($vol, $vols)
    EndIf
    EndFunc ;==>refresh

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

    Func _select()
    $selection = FileOpenDialog("Select an icon...", "C:\Users\" & @UserName & "\Pictures", "Icons (*.ico;*.exe)", 1)
    GUICtrlSetData($icon, $selection)
    EndFunc ;==>_select

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

    Func create()
    $volume = GUICtrlRead($vol)
    $label = GUICtrlRead($label)
    $icofile = GUICtrlRead($icon)
    If FileExists("" & $volume & "") Then
    $doublepoint = ""
    ElseIf FileExists("" & $volume & ":") Then
    $doublepoint = ":"
    EndIf
    If FileExists("" & $volume & ":") Or FileExists("" & $volume & "") Then
    $fullvol = $volume & $doublepoint
    If FileExists("" & $fullvol & "\autorun.inf") Then
    FileSetAttrib("" & $fullvol & "\autorun.inf", "-R")
    FileDelete("" & $fullvol & "\autorun.inf")
    EndIf
    If FileExists("" & $fullvol & "\[USBC-Icon].ico") Then
    FileSetAttrib("" & $fullvol & "\[USBC-Icon].ico", "-R")
    FileDelete("" & $fullvol & "\[USBC-Icon].ico")
    EndIf
    If FileExists("" & $fullvol & "") Then
    FileWrite("" & $fullvol & "\autorun.inf", "[autorun]" & @CRLF & "Label = " & $label & @CRLF & "Icon = [USBC-Icon].ico")
    FileSetAttrib("" & $fullvol & "\autorun.inf", "+RSH")
    FileCopy("" & $icofile & "", "" & $fullvol & "\[USBC-Icon].ico", 1)
    FileSetAttrib("" & $fullvol & "\[USBC-Icon].ico", "+RSH")
    MsgBox(64, "USB-L'C", "Successfully created label on " & $fullvol & "")
    EndIf
    ElseIf $volume <> "" Then
    MsgBox(16, "USB-L'C", "Error: The volume """ & $volume & """ doesn't exist.")
    EndIf
    EndFunc ;==>create
    ; Ende

    [/autoit]
    • Offizieller Beitrag

    So etwas ist sicher ein nettes Gimmick - aber es untergräbt durch die Nutzung von Autorun auch jedes Sicherheitsdenken. Es ist bei M$ ja leider üblich alle Sicherheitsvorkehrungen deaktiviert zu haben. Das erste nach Neuinstallation (oder Neuerwerb) eines Rechners sollte immer die Deaktivierung von Autorun sein. Zumal spätestens mit Einsatz vernünftiger Sicherheitssoftware eine autorun.inf sowieso geblockt wird (werden sollte).
    Ich denke der minimale Mehrwert durch ein eigenes Icon (nur dafür ist die autorun.inf erforderlich) steht im krassen Gegensatz zu den Gefahren die ein derart geöffnetes Medium bietet.
    Das Umbenennen kann man problemlos automatisiert vornehmen ohne Nutzung des Autostarts.

  • So etwas ist sicher ein nettes Gimmick - aber es untergräbt durch die Nutzung von Autorun auch jedes Sicherheitsdenken. Es ist bei M$ ja leider üblich alle Sicherheitsvorkehrungen deaktiviert zu haben. Das erste nach Neuinstallation (oder Neuerwerb) eines Rechners sollte immer die Deaktivierung von Autorun sein. Zumal spätestens mit Einsatz vernünftiger Sicherheitssoftware eine autorun.inf sowieso geblockt wird (werden sollte).
    Ich denke der minimale Mehrwert durch ein eigenes Icon (nur dafür ist die autorun.inf erforderlich) steht im krassen Gegensatz zu den Gefahren die ein derart geöffnetes Medium bietet.
    Das Umbenennen kann man problemlos automatisiert vornehmen ohne Nutzung des Autostarts.

    Ich habe vor langer Zeit auch mal so ein Tool geschrieben und meine, dass man per autorun.inf längere Labels und einige Sonderzeichen mehr verwenden kann, als wenn man es per Explorer umbenennt.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Hier mal als Gedankenstütze. ;)

    [autoit]


    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=refresh.ico
    ;i Hier wird das Haupticon eingetragen
    #AutoIt3Wrapper_Outfile=USBCustomizer.exe
    ;i Hier wird der Programmname eingetragen
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    GUICtrlSetImage($refresh, "USBCustomizer.exe", 0, 0)
    ;i Hier wird das icon dem Programm erneut entnommen, Programmname siehe Wrapper!

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

    ;i Includes einsparen = 0x0040 statt der Variablen
    $refresh = GUICtrlCreateButton("", 90, 19, 22, 22, 0x0040)

    [/autoit]
  • Hi,
    hier ein Beispiel, wie weitere Icons eingebunden werden können.
    Tipp:
    Bei den bereits vorhandene Autorun.inf Dateien würde ich den Nutzer fragen, ob Überschreiben/Löschen oder vorher umbenennen (Autorun.inf.alt). 8)

    [autoit]


    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=iconPLUS.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #AutoIt3Wrapper_Res_Icon_Add=1.ico
    #AutoIt3Wrapper_Res_Icon_Add=2.ico
    #AutoIt3Wrapper_Res_Icon_Add=3.ico
    #AutoIt3Wrapper_Run_Tidy=y
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

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

    #region - GUI Create
    GUICreate(' iconPLUS', 400, 400)
    $Checkbox = GUICtrlCreateCheckbox("cb", 30, 90, 150, 40, BitOR($BS_ICON, $BS_PUSHLIKE))
    GUICtrlSetImage(-1, @ScriptFullPath, -7)
    $bnOK = GUICtrlCreateButton("OK", 20, 350, 75, 40, $BS_ICON)
    GUICtrlSetImage(-1, @ScriptFullPath, -5)
    $bnClose = GUICtrlCreateButton("b", 305, 350, 75, 40, $BS_ICON)
    GUICtrlSetImage(-1, @ScriptFullPath, -6)
    GUISetState()
    #endregion - GUI Create

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $bnClose
    MsgBox(64, " iconPLUS - Example", "Viel Spaß wünscht RR04 !" & @TAB, 3)
    Exit
    Case $msg = $bnOK
    MsgBox(64, " iconPLUS - Example", "OK wurde gedrückt !" & @TAB)
    Case $msg = $Checkbox
    MsgBox(64, " iconPLUS - Example", "CheckBox wurde gedrückt !" & @TAB)
    EndSelect
    WEnd
    #endregion - GUI SelectLoop

    [/autoit]
  • Habe mal 3 Icons genommen und in 1.ico,2.ico und 3.ico umbenannt und dein Beispiel im selben Ordner kompiliert.
    Die Icons sind noch immer nicht in der Exe enthalten und werden nicht auf den Buttons angezeigt...

    Vielleicht stimmt was mit Aut2Exe bei mir nicht?

    Zu deinem Tipp: Gute Idee! Wird in die nächste Version kommen!

  • Der kompilierte Skript läuft mit Icons, aber wenn ich deinen Skript selbst kompiliere sind wiederum keine Icons da... :(

    Muss ich irgendwas anders einstellen, damit ich auch mit "wrapper" kompilieren kann? :/

  • In der PC-Zeitschrift "com!" ist unter der obigen Überschrift ein kleiner Artikel zu Deinem Tool (unter Punkt 12 auf der Seite 26 - "USB-Stick Icon zuweisen") veröffentlicht. :thumbup:

    Jetzt echt? Wie kamen die Redakteure denn daran? Stöbern die auf autoit.de herum? Hätte ich nicht gedacht.
    Auf jeden Fall einen herzlichen Glückwunsch von mir!

  • Danke, darüber habe ich mich auch sehr gefreut, das wurde mir per Mail zugeteilt. :D
    Hätte ich auch nicht gedacht, dass das ein Magazin veröffentlicht. :thumbup:


    Habe mal eine neue Version hochgeladen, enthält zwei kleine (kaum nennenswerte) Änderungen:
    -Überprüfung auf Schreibrechte jetzt schon bei der Datenträgerauswahl
    -Aktuelles Label wird in das Input-Feld eingetragen