7

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

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

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

4

4 回答 4

4

您可以尝试此线程中的 OP建议的选项,即:

任何一个

 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

编辑:格式化

于 2010-03-25T10:19:28.003 回答
2

除了我在原始问题中添加的评论之外——例如,如果你这样做是为了让你即将弹出的 OpenFileDialog 显示这些文件——不要这样做。

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

这样你只会在适当的时候影响你的应用程序

于 2010-03-25T11:02:55.933 回答
1

SHGetSetSettings

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

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

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

于 2010-04-02T20:43:56.547 回答
1

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

于 2010-03-25T10:19:54.610 回答