2

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

有人可以指出我正确的方向吗?

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

很奇怪。我可以选择一个没有 desktop.ini 的文件夹。我可以更改该文件夹的属性,选择文件夹类型,单击应用,看到一个 desktop.ini 被创建,并看到相应的文件夹视图变化。但是,我可以删除 desktop.ini 并且文件夹类型仍然存在。通过资源管理器重启。通过Windows重启。

关于可能的影子副本,我找不到支持这一点的证据。除了 C:,我所有的驱动器都关闭了系统保护。使用ShadowExplorer,我没有找到对任何 desktop.ini 文件的引用。

令人费解...

4

3 回答 3

5

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

但是,如果您在文件夹中创建 desktop.ini,请务必将“系统”属性添加到该文件夹​​,否则 desktop.ini 将被忽略。

attrib +s FolderName

(或使用 C# 代码)

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

于 2013-06-19T05:38:19.753 回答
2

好吧,你想要一个方向,所以.....这是一个关于文件夹自定义的 Microsoft 文档的链接......

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

在本文中,您将找到对几个注册表子键和键的引用。当然在不同的 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 文件上搜索更多文档,这似乎是解决您的问题的更好选择。我发现这个文档似乎非常详尽(但它也再次证明了如何正确处理这个小文件是非常复杂的)顺便说一句,我仍然需要了解只是更改这个文件是否真的会有所作为。据我尝试,测试文件夹保持不变,但这可能是由某种缓存引起的。

于 2013-06-17T23:17:30.817 回答
2

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

来自 Windows 7 的示例 desktop.ini 内容从文件夹设置为“优化图片”或在英文 Windows 中调用的任何内容。

[ViewState]
Mode=
Vid=
FolderType=Pictures

要更改/读取 FolderType,您只需更改/读取该文件。

该文件 (desktop.ini) 可以包含更多设置(如自定义图标文件/资源​​位置)。请参阅标准 Documents 或 Desktop 文件夹中的 desktop.ini。


根据评论编辑/更新:

也许那会发生,因为具有system属性的文件可能有卷影副本,并且在您删除它们后它们将被恢复?我确信没有其他地方可以存储它

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

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

此外,我进行了更多挖掘,并找到了一些有关“更正确”处理 desktop.ini 文件的 WINAPI 函数的信息。

请参阅: 在 Windows 资源管理器中为文件夹创建图标,使用 C# 由 codeproject.net 上的 Evan Stone

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

编辑2:

请看一下 SchlaWiener 的回答,他指出了一些重要的事情。

我对他的回答投了反对票,但我错了,现在我无法撤消我的投票。

于 2013-06-18T01:03:21.583 回答