如何在c#中获取/设置文件夹类型

本文关键字:设置 文件夹 类型 获取 | 更新日期: 2023-09-27 18:18:52

Windows定义了五种文件夹类型(一般项目、文档、图片、音乐和视频)。在Windows资源管理器中,您可以通过右键单击文件夹并选择属性->自定义->优化此文件夹来获取/设置类型。我正在寻找一种在c#中获取/设置文件夹类型的方法。我已经搜索过了,但是我一定是用错了术语。

谁能给我指个正确的方向?

更新:感谢大家的见解!我以为这会很简单——显然不是。

非常奇怪。我可以选择一个没有desktop.ini的文件夹。我可以更改该文件夹的属性,选择文件夹类型,单击应用,看到创建了desktop.ini,并看到文件夹视图相应更改。但是,我可以删除desktop.ini,文件夹类型仍然存在。通过浏览器重启。通过Windows重启。

关于可能的影子副本,我找不到证据来支持这一点。除了C:,系统保护在我所有的驱动器是关闭的。使用ShadowExplorer,我没有发现任何指向桌面ini文件的引用。

困惑…

如何在c#中获取/设置文件夹类型

我认为你可以使用桌面ini文件或注册表。

然而,如果你在一个文件夹中创建了一个desktop.ini,一定要在该文件夹中添加"System"属性,否则desktop.ini将被忽略。

attrib +s FolderName

(或c#代码)

链接到MSDN http://msdn.microsoft.com/en-us/library/aa969337.aspx

文件夹类型存储在位于该文件夹中的desktop.ini文件中(该文件夹具有SYSTEM属性,默认情况下不可见-您必须取消勾选"在Windows资源管理器设置中隐藏受保护的系统文件")。

示例desktop.ini内容从Windows 7文件夹设置为"优化图片"或其他英文Windows名称

[ViewState]
Mode=
Vid=
FolderType=Pictures

要更改/读取文件夹类型,只需更改/读取该文件。

该文件(desktop.ini)可以包含更多设置(如自定义图标文件/资源位置)。

请参阅标准文档或桌面文件夹中的Desktop .ini。

根据注释编辑/更新:

可能会发生这种情况,因为具有system属性的文件可能有影子副本,删除后会恢复?我确信没有其他地方可以存储

尝试覆盖该文件而不是删除。

在Windows注册表中,当您创建新文件夹时,只应用默认设置。

我也做了一些更多的挖掘,并发现了一些关于WINAPI函数处理desktop.ini文件"更合适"的信息。

看到这个:在Windows资源管理器中使用c#为文件夹创建图标

关于没有desktop.ini的自定义文件夹还有一件事-我认为这是不可能的。再次检查,并确保您可以看到具有system属性的文件。

编辑2:

请看看SchlaWiener的回答,他指着重要的东西。

我否决了他的回答,但是我错了,现在我不能撤销我的投票

你想要一个方向,所以.....这是一个关于文件夹定制的微软文档的链接…

如何修改文件夹视图设置或自定义文件夹

在本文中,您将找到一对注册表子键和键的参考。当然它们在不同的Windows版本中是不一样的(太简单了)

WinXP, 2003
HKEY_CURRENT_USER'Software'Microsoft'Windows'Shell
HKEY_CURRENT_USER'Software'Microsoft'Windows'ShellNoRoam
Vista, Win7
HKEY_CURRENT_USER'Software'Classes'Local Settings'Software'Microsoft'Windows'Shell

看看上面提到的注册表项和这些键背后的复杂性,我真的建议把这项工作留给操作系统本身。

编辑我被下面一些粗鲁的评论击中了我的自尊,所以我决定在这个DESKTOP.INI文件上搜索更多的文档,这似乎是解决你问题的更好选择。我发现这个文档似乎是非常详尽的(但它也再次证明了如何正确处理这个小文件是非常复杂的),顺便说一句,我仍然要理解如果只是改变这个文件真的有区别或没有。就我所尝试的测试文件夹保持不变,但这可能是由某种缓存引起的。