2010-03-25 13 views
6

¿Hay una función en la API de Windows para alternar la opción "Mostrar archivos ocultos, carpetas y unidades" en el Explorador de Windows (Herramientas >> Opciones de carpeta ... >> Ver lengüeta).API para alternar "Mostrar archivos, carpetas y unidades ocultas"

Sé de una clave de registro relacionada, pero cambiar eso no tendría efecto inmediato. La clave es: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden

Intentando hacer esto desde C#, pero la pregunta no es específica del idioma.

+2

Sin saber por qué estás tratando de hacer esto, ¿puedo preguntarlo? ¿Estás seguro de que esta es la solución correcta para cualquier problema que tengas? http://blogs.msdn.com/oldnewthing/archive/2008/12/11/9193695.aspx –

+0

Estoy haciendo una utilidad para mostrar/ocultar atributos ocultos para grupos de archivos. Por lo tanto, quiero mostrar una advertencia si los archivos ocultos están visibles en el Explorador y hacer que el usuario haga clic para arreglarlo. – dbkk

+0

@Damien Gracias por el enlace, también leí el blog de Raymond :) Es de sentido común no utilizar el estado del sistema operativo global para solucionar un problema local, por lo que una advertencia es apropiada. – dbkk

Respuesta

4

Usted podría tratar de las opciones de la OP en this thread sugiere, es decir:

De cualquier

SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 

o

RefreshPolicyEx(False, RP_FORCE); 

o

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

Estos no están en th e .NET C# API, por lo que tendrá que utilizar DllImport

Editar: formatear

+0

El enlace está roto. –

0

No conozco ningún API, pero la clave de registro es HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden. De la experimentación, parece que un valor de 1 significa show y un valor de 2 significa hide.

+0

Gracias por el downvote, pero si se tomó el tiempo para verificar, vería que la pregunta de OP se modificó para incluir la clave de registro unos días después de mi respuesta. –

2

Además del comentario que he agregado a la pregunta original: si lo hace para que, por ejemplo, OpenFileDialog esté a punto de abrirse y muestre estos archivos, no lo haga.

En ese caso, es mejor P/Invocando GetOpenFileName y ajuste de la opción apropiada (OFN_FORCESHOWHIDDEN (ver enum de un tema relacionado) en las banderas de la estructura OpenFileName.

esa manera que sólo está que afectan a su aplicación, en el momento apropiado

1

SHGetSetSettings

SHELLSTATE Structure fShowAllObjects BOOL TRUE para mostrar todos los objetos, incluidos los archivos y carpetas ocultos. FALSO para ocultar archivos y carpetas ocultos.

fShowSysFiles BOOL TRUE para mostrar los archivos del sistema, FALSO para ocultarlos.

Spy ++ dice que se envía un WM_SETTINGCHANGE a las ventanas del explorador.

+0

Funciona para cambiar la configuración. Desafortunadamente, en Windows 7 el explorador no se actualiza (WM_SETTINGCHANGE no ayuda). – dbkk

Cuestiones relacionadas