用于切换“显示隐藏文件,文件夹和驱动器”的API

时间:2010-03-25 10:02:43

标签: c# winapi windows-explorer windows-shell

Windows API中是否有一项功能可以在Windows资源管理器中切换“显示隐藏文件,文件夹和驱动器”选项(工具>>文件夹选项...>>视图选项卡)。

我知道相关的注册表项,但更改它不会立即生效。关键是:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden

尝试从C#中执行此操作,但问题不是特定于语言的。

4 个答案:

答案 0 :(得分:4)

您可以尝试this thread中建议的选项,即:

无论

 SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);

 RefreshPolicyEx(False, RP_FORCE);

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

这些不在.NET C#API中,因此您必须使用DllImport

修改:格式化

答案 1 :(得分:2)

除了我在原始问题中添加的评论之外 - 如果您正在这样做,例如,您将要弹出的OpenFileDialog显示这些文件 - 请不要这样做。

在这种情况下,您最好P / Invoking GetOpenFileName,并在enum结构的标志中设置适当的选项(OFN_FORCESHOWHIDDEN(请参阅OpenFileName了解相关主题))

这样,您只会在适当的时间影响您的应用

答案 2 :(得分:1)

SHGetSetSettings

SHELLSTATE Structure fShowAllObjects BOOL 为TRUE显示所有对象,包括隐藏文件和文件夹。 FALSE隐藏隐藏的文件和文件夹。

fShowSysFiles BOOL 显示系统文件为TRUE,隐藏它们为FALSE。

Spy ++说WM_SETTINGCHANGE被发送到资源管理器窗口。

答案 3 :(得分:0)

我知道没有API,但注册表项为HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden。从实验来看,似乎值1表示显示,值2表示隐藏。