Unter dem Registrierungsschlüssel:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
...es gibt zwei gut dokumentierte Werte, die sich auf die Anzeige versteckter Dateien und Ordner im Windows Explorer beziehen.
Der Hidden
Schlüssel zeigt versteckte Dateien an, wenn er wahr ist, und verbirgt sie, wenn er falsch ist.
Der ShowSuperHidden
Schlüssel wird im Allgemeinen als sein Äquivalent für „superversteckte“ (d. h. geschützte/System-)Dateien angesehen; er zeigt superversteckte Dateien an, wenn der Wert auf „true“ steht, und verbirgt sie, wenn der Wert auf „false“ steht.
Wo kommt nun der SuperHidden
Wert ins Spiel? Sein Name lässt vermuten, dass er das natürliche Analogon zum Schlüssel ist Hidden
, aber soweit ich das beurteilen kann, gibt es keine Dokumentation dazu und zu seiner Funktion.
Was ist der Zweck des SuperHidden
Wertes und worin besteht der Unterschied zu ShowSuperHidden
?
Antwort1
ShowSuperHidden
,wie wir entdeckten, steuert, ob superversteckte (Versteckt + System) Dateien angezeigt werden. Soweit ich das beurteilen kann, SuperHidden
steuert es nichts und seine Existenz ist wahrscheinlich ein Programmierfehler.
Verwenden vonProzessmonitorIch habe Lese- und Schreibvorgänge in diesen Registrierungswerten beobachtet. Die einzige Interaktion SuperHidden
war ein Schreibvorgang, als der Benutzer die Registerkarte „Ansicht“ im Dialogfeld „Ordneroptionen“ öffnete. Es wurde eine 1 empfangen, wenn superversteckte Dateien angezeigt werden, andernfalls eine 0. Es wurde nie gelesen, selbst als ich den Explorer beendete und neu startete.
Procmon stellt den Stack bereit, der zu einer überwachten Operation geführt hat (klicken Sie doppelt auf ein Ereignis und sehen Sie sich die Registerkarte Stack an). Ich habe die beteiligten DLL-Dateien mitIDA v5.0. Der einzige relevante Wert mit einer Erwähnung von SuperHidden
war shell32.dll
. Die CachedShellState::SaveAdvancedSettings
Funktion führt einen Schreibvorgang in der Registrierung für diesen Wert und andere in diesem Schlüssel aus und übernimmt dabei die aktuellen Ansichtseinstellungen.
Der Explorer ruft diese Funktion anscheinend auf, bevor er die Registerkarte „Ansicht“ anzeigt. Dies geschieht wahrscheinlich, um sicherzustellen, dass die Registrierung mit den aktuellen Einstellungen im Arbeitsspeicher übereinstimmt, bevor der aktuelle Status der Ansichtsoptionen geladen wird, obwohl ich zugeben muss, dass ich mir über die Begründung nicht 100 % sicher bin. Wie dem auch sei, die entsprechende shell32.dll
Funktion CachedShellState::_GetAdvancedSettings
gibt einen Lesevorgang vom korrekten Wert aus ShowSuperHidden
.
Diese Disassemblierungslisten stammen aus der Windows 7-Version dieser DLL. Unter Windows 10 SuperHidden
ist es nicht in der Registrierung vorhanden und CachedShellState::SaveAdvancedSettings
schreibt in ShowSuperHidden
.
Daher komme ich zu dem Schluss, dass ein Entwickler beim Programmieren der Version dieser Funktion, die mit Windows 7 ausgeliefert wird, das Show
in versehentlich weggelassen hat ShowSuperHidden
, der Fehler jedoch im Laufe der Entwicklung zu Windows 10 behoben wurde.
Für Neugierige: Das Dialogfeld „Ordneroptionen“ wird durch diesen Fehler nicht beschädigt, da es den ValueName
Eintrag unter jedem Einstellungsschlüssel hier konsultiert:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder
Die Bedeutung der anderen Teile dieses Zweiges herauszufinden, bleibt dem Leser als (lustige!) Übung überlassen.