Windows(7 或更高版本)如何确定要应用于已知(特殊)文件夹的文件夹视图?

Windows(7 或更高版本)如何确定要应用于已知(特殊)文件夹的文件夹视图?

问题:

我想将 Windows 8.1 Pro 64 位计算机上所有文件夹的默认文件夹视图设置为“详细信息”。我已部分解决了此问题,如下所示:

设置默认文件夹视图(适用于大多数文件夹)

  1. 删除以下注册表项。

    HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU

    HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags

  2. 添加以下注册表项。

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags]

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders]

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\ComDlg]

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\ComDlg\{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}]

    "Mode"=dword:00000004
    "Vid"="{137E7700-3573-11CF-AE69-08002B2E1262}"
    

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\ComDlgLegacy]

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\ComDlgLegacy\{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}]

    "Mode"=dword:00000004
    "Vid"="{137E7700-3573-11CF-AE69-08002B2E1262}"
    

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell]

    "FolderType"="NotSpecified"
    

    [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}]

    "Mode"=dword:00000004
    "Vid"="{137E7700-3573-11CF-AE69-08002B2E1262}"
    

请注意,如果您尝试此操作,则需要重新启动 explorer.exe 才能使文件夹视图设置生效:

taskkill /f /im explorer.exe
start explorer.exe

我没有一个参考资料可以解释这一点;我是根据几个可能不完整或部分错误的参考资料拼凑起来的。

无论如何,据我理解这些条目(如果我错了,请纠正我):

  • Shell/ComDlg/ComDlgLegacy 意味着我希望将这些设置应用于资源管理器和文件对话框。

  • {5C4F28B5-F869-4E84-8E60-F11DB97C5CC7} 是通用文件夹模板,您可以在以下位置找到:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}

  • {137E7700-3573-11CF-AE69-08002B2E1262} 是详细信息视图。似乎必须同时指定视图 ID 和模式,而详细信息视图对应的模式值为 4。请参阅本文;不幸的是我没有更确切的参考(例如来自微软的)。

  • “FolderType”="NotSpecified" 关闭自动文件夹类型发现,这似乎会干扰该解决方案。

据我所知,这将“详细信息”文件夹视图应用于所有物理文件夹。

已知/特殊文件夹

但是,Windows 似乎还有另一种类型的文件夹,称为“已知”或“特殊”文件夹。Explorer 通常会在左窗格或地址栏左侧的下拉列表中显示其中一些文件夹:

资源管理器中的特殊文件夹

这里是已知文件夹 ID 的列表。

在您的计算机上,您可以找到以下列出的特殊文件夹:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions

您还可以使用以下方式查看计算机上的特殊文件夹此工具

我想为所有特殊文件夹设置文件夹视图,就像我为所有物理文件夹所做的那样。但是,我不知道 Windows 如何决定将哪种文件夹视图应用于特殊文件夹。

这是我所知道的。假设我打开特殊文件夹 Libraries\Documents,其 FolderDescription GUID 为 {7B0DB17D-9CD2-4A93-9733-46CC89022E7C}。Explorer 以大图标视图显示此文件夹,这与我之前尝试在所有文件夹上设置的文件夹视图相矛盾。

当我刷新 regedt32 时,我看到 Windows 添加了以下注册表项:

[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\1]

[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\1\Shell]

    "TV_FolderType"="{FBB3477E-C9E4-4B3B-A2BA-D3F5D3CD46F9}"
    "TV_TopViewID"="{82BA0782-5B7A-4569-B5D7-EC83085F08CC}"
    "TV_TopViewVersion"=dword:00000001

TV_FolderType 值指的是另一个文件夹模板,就像我们之前看到的通用文件夹模板一样。它的名字是 Documents.Library,可以在以下位置找到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{fbb3477e-c9e4-4b3b-a2ba-d3f5d3cd46f9}

在该条目下,我看到一个名为 TopViews 的键,TopViews 下有六个具有 GUID 名称的键,其中一个与我们之前看到的 TV_TopViewID 值匹配:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\\{fbb3477e-c9e4-4b3b-a2ba-d3f5d3cd46f9}\TopViews\\{82ba0782-5b7a-4569-b5d7-ec83085f08cc}]
    "ColumnList"="prop:0(34)System.ItemNameDisplay;0System.DateModified;0System.ItemTypeText;0System.Size;1System.DateCreated;1System.ItemFolderPathDisplay;1System.Author;1System.Category;1System.Keywords;1System.Title"
    "Order"=dword:00000001
    "SortByList"="prop:System.ItemNameDisplay;-System.DateModified"
    "GroupBy"="System.ItemSearchLocation"
    "LogicalViewMode"=dword:00000001
    "PrimaryProperty"="System.ItemSearchLocation"
    "Name"="@shell32.dll,-34817"

“顺序”= 1 值表明选择此视图是因为它在此文件夹模板中排名第一。

我不知道 Windows 如何根据此“TopView”信息决定应用大图标文件夹视图。我在注册表中搜索了“{82ba0782-5b7a-4569-b5d7-ec83085f08cc}”,但它仅作为 Shell\Bags 中的 TV_TopViewID 值出现,或者出现在其他文件夹模板的 TopViews 列表中。它不在 HKEY_CLASSES_ROOT\CLSID 中。

部分(丑陋的)解决方案

我已经部分解决了这个问题,如下所示。我不建议在你的电脑上尝试此操作。如果你这样做,请先备份相关条目。

  1. 删除以下注册表项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{fbb3477e-c9e4-4b3b-a2ba-d3f5d3cd46f9}\TopViews

  2. 添加以下注册表项:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{fbb3477e-c9e4-4b3b-a2ba-d3f5d3cd46f9}\TopViews]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{fbb3477e-c9e4-4b3b-a2ba-d3f5d3cd46f9}\TopViews\{00000000-0000-0000-0000-00000000000}]

    "ColumnList"="prop:0(34)System.ItemNameDisplay;0System.DateModified;0System.ItemTypeText;0System.Size;1System.DateCreated;1System.Author;1System.Keywords;1System.Title"
    "Order"=dword:00000000
    "LogicalViewMode"=dword:00000001
    "Name"="NoName"
    

这样,Documents.Library 文件夹模板就拥有与通用文件夹模板相同的 TopView 集。这样 Explorer 就会使用我在 HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders 中为通用文件夹模板指定的文件夹视图。

必须替换每个文件夹模板的 TopViews 列表似乎很粗糙(就像我在我应该修复的下游问题一样)并且可能很危险(因为我不知道这一切是如何运作的)。

概括

总而言之,我想告诉 Windows 将默认文件夹视图应用于所有特殊/已知文件夹以及所有物理文件夹。

我也想知道:

  • Windows 如何确定给定 FolderDescription(特殊文件夹)的 FolderType(文件夹模板)。

  • Windows 如何确定给定 FolderType 的文件夹视图(详细信息、列表等)。我可以推断它会查找 FolderType 的 TopView,但我不知道它如何将其转换为文件夹视图。

我一直在寻找,但在任何地方都找不到有关此内容的记录。

谢谢您,如果我可以提供更多信息,请告诉我。

编辑:我说“Windows 7 或更高版本”,因为我收集了在 XP 和 7 之间更改的注册表项。

编辑:

更好的解决方案

我找到了一种更好的方法来设置特殊文件夹的文件夹视图,尽管它不如在普通文件夹上设置文件夹视图那么优雅。

假设我浏览到特殊文件夹 Libraries\Documents。如果不存在以下注册表项,Windows 会创建它们:

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{FBB3477E-C9E4-4B3B-A2BA-D3F5D3CD46F9}

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell\{FBB3477E-C9E4-4B3B-A2BA-D3F5D3CD46F9}\{82BA0782-5B7A-4569-B5D7-EC83085F08CC}

    "Rev"=dword:00000003
    "FFlags"=dword:41200001
    "Vid"="{0057D0E0-3573-11CF-AE69-08002B2E1262}"
    "Mode"=dword:00000001
    "LogicalViewMode"=dword:00000001
    "IconSize"=dword:00000010
    "Sort"=hex:(omitted for brevity)
    "ColInfo"=hex:(omitted for brevity)

{FBB3477E-C9E4-4B3B-A2BA-D3F5D3CD46F9} 是与 Libraries\Documents 关联的文件夹模板。

{82BA0782-5B7A-4569-B5D7-EC83085F08CC} 是与文件夹模板关联的顺序为 1 的 TopView。

我执行以下操作:

  1. 不要动钥匙。

  2. 删除除 Vid 和 Mode 之外的所有值。

  3. 将模式设置为 4,将 Vid 设置为 {137E7700-3573-11CF-AE69-08002B2E1262}。

  4. 下次我浏览 Libraries\Documents 时,它有“详细信息”文件夹视图。我甚至不必重新启动 Explorer。

我可以以相同的方式设置其他特殊文件夹的文件夹视图。

事实证明,如果我只是浏览所有特殊文件夹并在每个文件夹上设置文件夹视图,我最终会得到与手动设置相同的注册表项。

好消息是我可以这样做,然后导出 HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders 并将 .reg 文件部署到另一台机器。

不过,最好还是为所有特殊文件夹设置一次文件夹视图。

相关内容