2010-03-25 16 views
6

Gibt es eine Funktion in Windows API, um die Option "Versteckte Dateien, Ordner und Laufwerke anzeigen" in Windows Explorer (Extras >> Ordneroptionen ... >> Ansicht) zu aktivieren Tab).API zum Umschalten zwischen "Versteckte Dateien, Ordner und Laufwerke anzeigen"

Ich kenne einen verwandten Registrierungsschlüssel, aber die Änderung würde nicht sofort Wirkung haben. Der Schlüssel ist: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden

Der Versuch, dies von C# zu tun, aber die Frage ist nicht sprachspezifisch.

+2

Ich weiß nicht, warum Sie das versuchen, kann ich nur fragen - Sind Sie sicher, dass dies die richtige Lösung für Ihr Problem ist? http://blogs.msdn.com/oldnewthing/archive/2008/12/11/9193695.aspx –

+0

Ich mache ein Dienstprogramm, um versteckte Attribute für Gruppen von Dateien anzuzeigen/verbergen. Daher möchte ich eine Warnung anzeigen, wenn versteckte Dateien im Explorer sichtbar sind, und der Benutzer klicken, um es zu beheben. – dbkk

+0

@Damien Danke für den Link, ich las Raymonds Blog auch :) Es ist vernünftig, nicht globalen OS-Status zu verwenden, um ein lokales Problem zu beheben, so dass eine Warnung angebracht ist. – dbkk

Antwort

4

Sie könnten die Möglichkeiten, die OP versuchen in this thread schlägt vor, das heißt:

Entweder

SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 

oder

RefreshPolicyEx(False, RP_FORCE); 

oder

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, integer(pchar('Policy')), SMTO_NORMAL or SMTO_ABORTIFHUNG, 5000, c1); 

Diese sind nicht in th e .NET C# API, so dass Sie DllImport

bearbeiten verwenden: Formatierung

+0

Link ist kaputt. –

0

ich keine API weiß, aber der Registrierungsschlüssel ist HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden. Aus Experimenten scheint es, dass ein Wert von 1 "anzeigen" bedeutet und ein Wert von "2" bedeutet "verstecken".

+0

Vielen Dank für den Downvote, aber wenn Sie sich die Zeit genommen haben, um zu überprüfen, würden Sie sehen, dass die OP-Frage geändert wurde, um den Registrierungsschlüssel ein paar Tage nach meiner Antwort einzuschließen. –

2

Zusätzlich zu dem Kommentar habe ich die ursprüngliche Frage hinzugefügt - wenn Sie dies tun, damit zum Beispiel der OpenFileDialog, den Sie gerade öffnen wollen, diese Dateien anzeigt - tun Sie es nicht.

In diesem Fall sind Sie besser P/GetOpenFileName aufrufen und die entsprechende Option Einstellung (OFN_FORCESHOWHIDDEN (siehe enum für ein verwandtes Thema) in den Flaggen der OpenFileName Struktur.

diese Weise können Sie nur sind beeinflussen Ihre Anwendung, zu gegebener Zeit

1

SHGetSetSettings

SHELLSTATE Structure fShowAllObjects BOOL TRUE, um alle Objekte einschließlich versteckter Dateien und Ordner anzuzeigen. FALSE, um versteckte Dateien und Ordner zu verstecken.

fShowSysFiles BOOL TRUE, um Systemdateien anzuzeigen, FALSE, um sie auszublenden.

Spy ++ sagt, dass ein WM_SETTINGCHANGE an die Explorer-Fenster gesendet wird.

+0

Es funktioniert, um die Einstellung zu ändern. Leider wird in Windows 7 Explorer nicht aktualisiert (WM_SETTINGCHANGE hilft nicht). – dbkk