Was ist der Unterschied zwischen den Registrierungswerten ShowSuperHidden und SuperHidden?

Was ist der Unterschied zwischen den Registrierungswerten ShowSuperHidden und SuperHidden?

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 HiddenSchlüssel zeigt versteckte Dateien an, wenn er wahr ist, und verbirgt sie, wenn er falsch ist.

Der ShowSuperHiddenSchlü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 SuperHiddenWert 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 SuperHiddenWertes 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, SuperHiddensteuert es nichts und seine Existenz ist wahrscheinlich ein Programmierfehler.

Verwenden vonProzessmonitorIch habe Lese- und Schreibvorgänge in diesen Registrierungswerten beobachtet. Die einzige Interaktion SuperHiddenwar 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 SuperHiddenwar shell32.dll. Die CachedShellState::SaveAdvancedSettingsFunktion führt einen Schreibvorgang in der Registrierung für diesen Wert und andere in diesem Schlüssel aus und übernimmt dabei die aktuellen Ansichtseinstellungen.

SuperHidden in SaveAdvancedSettings schreiben

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.dllFunktion CachedShellState::_GetAdvancedSettingsgibt einen Lesevorgang vom korrekten Wert aus ShowSuperHidden.

ShowSuperHidden wird in _GetAdvancedSettings gelesen

Diese Disassemblierungslisten stammen aus der Windows 7-Version dieser DLL. Unter Windows 10 SuperHiddenist es nicht in der Registrierung vorhanden und CachedShellState::SaveAdvancedSettingsschreibt in ShowSuperHidden.

Windows 10 schreibt in ShowSuperHidden in SaveAdvancedSettings

Daher komme ich zu dem Schluss, dass ein Entwickler beim Programmieren der Version dieser Funktion, die mit Windows 7 ausgeliefert wird, das Showin 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 ValueNameEintrag 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.

verwandte Informationen