Windows 体系中目录 (Directory) 与文件夹 (Folder) 的差异
在 Windows 体系中,咱们我们常常会见到「目录」和「文件夹」两个名词,但许多人会这两个概念混用,乃至搞不清楚它们的差异,包含写这篇博文的我,之前也是相同。相同表明「文件夹」的概念,为何会有两个说法?事实上,这两个词不单单是在中文中,在英文原文中,也是有两个不同的词汇,Directory 和 Folder。一般,Directory 被翻译成「目录」,而 Folder 被翻译成「文件夹」。但实践的状况是,许多状况下,这两个的翻译都比较紊乱,Directory 也经常被翻译为「文件夹」。那么微软运用 Directory 和 Folder 这两个名词究竟什么不同的含义和差异呢?这样的一个问题我多年也没搞清楚,直到最近又在网上查找材料,并自己进行一些测验后,才发现他们的细微差别。
首要,作为一个 Windows 研制人员,注册表、文件相关等都应该是了解的。那么大多数人应该都知道,在 Windows 的注册表编辑器中的 HKEY_CLASSES_ROOT 节点下面,有 Directory 和 Folder 两个子键,相似其他的 ProgId 子键,支撑在其 shell 子键增加自定义的动作和指令。有一天我突发奇想,假如我别离在这两个方位增加一个动作项,体系该怎么显现它们?所以我别离在不同的方位独自增加注册表项,然后调查右键菜单,发现了其间的隐秘:
仅在 HKEY_CLASSES_ROOT\Directory\shell 下面随意增加一个节点,如 action,我别离在「计算机」、「回收站」、「计算机」中的恣意驱动器、一般文件夹上点击右键,只要一般的文件夹右键菜单中呈现了 action 这一菜单项。
仅在 HKEY_CLASSES_ROOT\Folder\shell 下面随意增加一个节点,如 action,我别离在「计算机」、「回收站」、「计算机」中的恣意驱动器、一般文件夹上点击右键,一切这些项目的右键菜单中均呈现了 action 这一菜单项。
仅在 HKEY_CLASSES_ROOT\Drive\shell 下面随意增加一个节点,如 action,我别离在「计算机」、「回收站」、「计算机」中的恣意驱动器、一般文件夹上点击右键,只要驱动器盘符右键菜单中呈现了 action 这一菜单项。
如此看来,Folder 的规模其实是很大的,它包含了体系中一切可以双击翻开并检查其内容的「文件夹」项目,包含「计算机」、「回收站」、「控制面板」等这些虚拟文件夹,以及「计算机」中的一切磁盘驱动器,以及其间的任何文件夹 (Directory)。
而 Directory 的概念则小的许多,它有必要是存在于物理磁盘上的一个「文件夹」项目,而「计算机」中的一切磁盘驱动器,如「本地磁盘 (C:)」则不认为是 Directory。
总结:假如是开发外壳扩展 dll,最好依据本身的需求写入到正确的子键下面,不要在 Directory 和 Folder 等子键下乱写一通。尽管有的外壳扩展不支撑虚拟文件夹,写在 Directory 下体系也并不会加载,但仍是期望各位研制人员可以正确恪守标准。
