Windows API中是否有一项功能可以在Windows资源管理器中切换“显示隐藏文件,文件夹和驱动器”选项(工具>>文件夹选项...>>视图选项卡)。
我知道相关的注册表项,但更改它不会立即生效。关键是:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden
尝试从C#中执行此操作,但问题不是特定于语言的。
答案 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)
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表示隐藏。