- 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
#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
$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)
$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)
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
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
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
Func _FillList()
For $i = 1 To $arWert1[0]
GUICtrlCreateListViewItem($RegKey & $arWert1[$i] & "|" & $arExt[$i] & "|" & $arDiscrip[$i], $ListView1)
Next
EndFunc ;==>_FillList
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