【问题标题】:How to Get/Set Folder Type in C#如何在 C# 中获取/设置文件夹类型
【发布时间】:2013-06-14 01:02:18
【问题描述】:

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

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

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

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

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

令人费解...

【问题讨论】:

  • “文件夹类型”到底是什么意思?您是否尝试获取只读、隐藏等属性?
  • @sircapsalot,再读一遍,他的意图很清楚。
  • 这是个好问题;它不应该被关闭。

标签: c# windows desktop.ini


【解决方案1】:

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

How to modify your folder view settings or to customize a folder

在本文中,您将找到对几个注册表子键和键的引用。 当然在不同的 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

查看提到的注册表项以及这些项背后的复杂性,我真的建议将这项工作留给操作系统本身。

编辑 我的自尊心被下面一些粗鲁的 cmets 打击了,所以我决定在这个 DESKTOP.INI 文件上搜索更多文档,这似乎是一个更好的选择解决你的问题。我have found this documentation 这似乎很详尽(但它也再次证明了如何正确处理这个小文件是非常复杂的)顺便说一句,我仍然需要了解只是更改这个文件是否真的会有所作为。据我尝试,测试文件夹保持不变,但这可能是由某种缓存引起的。

【讨论】:

  • 伟大的研究。仔细看后,我也建议忘记它,让用户自行设置。
  • 感谢您的信息。然而,即使我的 Windows 7 机器上有许多自定义目录,我在 HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell 中找不到目录条目。很奇怪。
  • 因为没有目录条目。注册表中没有这样的东西。想想可移动设备,例如许多计算机上使用的 USB 密钥和 DVD-ROM……这都是关于 desktop.ini 的。
  • @Steve,这不应该是冒犯或粗鲁的,这就是我添加微笑的原因。对不起,如果你觉得被冒犯了。我的英语不是很完美,也许我用错了词。但是,您只写了“不要忘记 desktop.ini”之类的内容,而该文件是最重要的。
  • @Kamil 你是对的,实际上我所知道的信息并不准确,研究 desktop.ini 文件是有益的。 SO上再见
【解决方案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 函数的信息。

看到这个: Create Icons for Folders in Windows Explorer, Using C# by Evan Stone at codeproject.net

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

编辑 2:

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

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

【讨论】:

  • 感谢您的信息。但是,我发现几个没有 desktop.ini 文件的自定义目录。我什至可以删除现有的 desktop.ini 文件并保留自定义。似乎它也必须存储在其他地方。
【解决方案3】:

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

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

attrib +s FolderName

(或使用 C# 代码)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多