ALLE Erweiterungen anzeigen

    • Offizieller Beitrag

    Hi,
    Ab Windows 98 existiert unter <Extras> <Ordneroptionen> (Windows 98: <Ansicht> <Ordneroptionen>) auf der Registerkarte <Ansicht> die Option "Erweiterung bei bekannten Dateitypen ausblenden"
    Eigentlich sollte Windows jetzt alle Extensionen zeigen.
    Die meisten Erweiterungen zeigt der Explorer auch.
    Jedoch für einige registrierte Dateitypen bleiben die Erweiterungen weiterhin unsichtbar.
    Aber natürlich kann man auch da Abhilfe schaffen. ;)
    Ich hab ein kleines Proggi gebastelt, dass alle ausgeblendeten Dateitypen auflistet. So ihr möchtet, könnt ihr mit einem Klick die markierte Erweiterung sichtbar machen.
    Ich häng mal zum Testen 2 selbst erzeugte Registry-Schlüssel an ('AAA.ext.reg' und 'AAA.TEST.reg'). Der erste Schlüssel trägt die Extension '.111' ein und der zweite Schlüssel bestimmt u. a. ob diese sichtbar ist oder nicht.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    #include <array.au3>
    Dim $i = 0, $j = 0, $msg = "", $RegKey = "HKEY_CLASSES_ROOT\", $Descrip = "", $Ext, $arAllExt[1], $arWert1[1], $arExt[1], $arDiscrip[1]
    Dim $Wert1, $Wert2, $Val, $Fehler1 = 0, $Fehler2 = 0, $Abbruch = 0
    $arAllExt[0] = 0
    $arWert1[0] = 0
    $arExt[0] = 0
    $arDiscrip[0] = 0

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

    $HKCR = GUICreate("Versteckte Dateitypen", 617, 384, 235, 250)
    $ListView1 = GUICtrlCreateListView("Registry-Schlüssel|Erweiterung|Beschreibung", 8, 40, 601, 336, BitOR($LVS_NOSORTHEADER, $LVS_SINGLESEL))
    _GUICtrlListViewSetColumnWidth(-1, 0, 258)
    _GUICtrlListViewSetColumnWidth(-1, 1, 70)
    _GUICtrlListViewSetColumnWidth(-1, 2, 268)
    $bEnde = GUICtrlCreateButton("Schließen", 509, 10, 100, 20, 0)
    $bShowExt = GUICtrlCreateButton("Erweiterung sichtbar machen", 198, 10, 170, 20, 0)
    $bShowHiddenExt = GUICtrlCreateButton("Zeige Versteckte Dateitypen", 8, 10, 170, 20, 0)

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

    $Busy = GUICreate("", 160, 110, -1, -1, $WS_POPUP)
    GUISetBkColor(0x708090)
    $label_busy = GUICtrlCreateLabel("Einen Moment bitte." & @LF & @LF & "Die notwendigen Daten" _
    & @LF & "werden ermittelt..", 20, 15, 120, 100, $SS_CENTER)
    GUICtrlSetFont(-1, 10, Default, 2)
    GUICtrlSetColor(-1, 0xF0E68C)

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

    GUISetState(@SW_SHOW, $HKCR)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $bEnde
    ExitLoop
    Case $msg = $bShowHiddenExt
    GUISetState(@SW_SHOW, $Busy)
    _ReadReg()
    _ExtRead()
    GUISetState(@SW_HIDE, $Busy)
    _FillList()
    Case $msg = $bShowExt
    _ShowExtension()
    If $Abbruch = 0 Then _GUICtrlListViewDeleteItemsSelected($ListView1)
    EndSelect
    WEnd
    Exit

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

    Func _ReadReg()
    Do
    $i += 1
    $Wert1 = RegEnumKey($RegKey, $i)
    $Fehler1 = @error
    If $Fehler1 = 0 Then
    If StringLeft($Wert1, 1) = "." Then
    _ArrayAdd($arAllExt, $Wert1)
    $arAllExt[0] += 1
    EndIf
    RegRead($RegKey & $Wert1, "NeverShowExt")
    $Fehler2 = @error
    If $Fehler2 = 0 Then
    _ArrayAdd($arWert1, $Wert1)
    $arWert1[0] += 1
    $Descrip = RegRead($RegKey & $Wert1, "")
    _ArrayAdd($arDiscrip, $Descrip)
    $arDiscrip[0] += 1
    EndIf
    EndIf
    Until $Fehler1 <> 0
    EndFunc ;==>_ReadReg

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

    Func _ExtRead()
    For $i = 1 To $arWert1[0]
    For $j = 1 To $arAllExt[0]
    If RegRead($RegKey & $arAllExt[$j], "") = $arWert1[$i] Then
    $Ext = $arAllExt[$j]
    _ArrayAdd($arExt, $Ext)
    $arExt[0] += 1
    EndIf
    Next
    Next
    EndFunc ;==>_ExtRead

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

    Func _FillList()
    For $i = 1 To $arWert1[0]
    GUICtrlCreateListViewItem($RegKey & $arWert1[$i] & "|" & $arExt[$i] & "|" & $arDiscrip[$i], $ListView1)
    Next
    EndFunc ;==>_FillList

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

    Func _ShowExtension()
    If MsgBox(20, "Registry-Wert löschen", "Der gewählte Registry-Wert wird" & @LF & "unwiederruflich gelöscht" _
    & @LF & @LF & "Wollen Sie fortfahren ?") = 7 _
    Then
    $Abbruch = 1
    Return 0
    Else
    $item = _GUICtrlListViewGetItemText($ListView1, _GUICtrlListViewGetSelectedIndices($ListView1))
    If $item <> "" Then
    If StringInStr($item, ".lnk", 1) Then
    If MsgBox(20, ".lnk anzeigen", "Das Anzeigen von allen Verknüpfungen" & @LF & "führt zu einem Chaos auf dem Desktop!" _
    & @LF & @LF & "Wollen Sie trotzdem fortfahren ?") = 7 _
    Then
    $Abbruch = 1
    Return 0
    EndIf
    EndIf
    $key = StringLeft($item, StringInStr($item, "|", 0, 1) - 1)
    RegDelete($key, "NeverShowExt")
    EndIf
    $Abbruch = 0
    EndIf
    EndFunc ;==>_ShowExtension

    [/autoit]