如何在C#中获取/设置文件夹types

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

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

更新 :感谢所有的见解! 认为这将是简单的 – 显然不是。

很奇怪。 我可以select一个没有desktop.ini的文件夹。 我可以改变那个文件夹的属性,select一个文件夹types,点击apply,看到一个desktop.ini被创build,并且看到相应的文件夹视图改变。 但是,我可以删除desktop.ini文件夹types仍然存在。 通过浏览器重启。 通过Windows重新启动。

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

百思不得其解……

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

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

attrib +s FolderName 

(或用C#代码)

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

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

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

 [ViewState] Mode= Vid= FolderType=Pictures 

要更改/读取FolderType,您可以更改/读取该文件。

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


编辑/更新根据评论:

也许那些事情,因为具有system属性的文件可能有影子副本,他们将被删除后恢复? 我确信没有其他地方存储这个地方

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

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

另外我做了一些更多的挖掘,并且发现了一些关于WINAPI函数的信息,这些函数可以更好地处理desktop.ini文件。

看到这个: 在Windows资源管理器中创建文件夹的图标,在codeproject.net上使用Evan Stone的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文件,这似乎是一个更好的选择来解决您的问题更多的文档。 我发现这个文档似乎是非常具有说服力的(但是它也演示了如何正确处理这个小文件是非常复杂的)。顺便说一句,我仍然要明白,如果只是改变这个文件真的有所作为。 据我试图测试文件夹保持不变,但这可能是由某种缓存引起的。