Як Windows (7 або новіша версія) визначає, який вид папки застосувати до відомої (спеціальної) папки?


1

Проблема:

Я хочу встановити вигляд папки за замовчуванням на Деталі для всіх папок на моєму 64-бітному комп'ютері Windows 8.1 Pro. Я частково вирішив цю проблему так:

Налаштування перегляду папок за замовчуванням (для більшості папок)

  1. Видаліть наступні ключі реєстру.

    HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні настройки \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ BagMRU

    HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні налаштування \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ Мішки

  2. Додайте наступні записи реєстру.

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні налаштування \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ Мішки]

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні налаштування \ Програмне забезпечення \ Майкрософт \ Windows \ Оболонка \ Мішки \ Усі папки]

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні налаштування \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ Сумки \ AllFolders \ ComDlg]

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні настройки \ Програмне забезпечення \ Майкрософт \ Windows \ Оболонка \ Мішки \ Усі папки \ ComDlg \ {5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}]

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

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні настройки \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ Сумки \ AllFolders \ ComDlgLegacy]

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні налаштування \ Програмне забезпечення \ Майкрософт \ Windows \ Оболонка \ Мішки \ Усі папки \ ComDlgLegacy \ {5C4F28B5-F869-4E84-8E60-F11DB97C5CC7}]

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

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні налаштування \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ Сумки \ AllFolders \ Shell]

    "FolderType"="NotSpecified"
    

    [HKEY_CURRENT_USER \ Програмне забезпечення \ Класи \ Локальні настройки \ Програмне забезпечення \ Microsoft \ Windows \ Shell \ Мішки \ Усі папки \ 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} - це перегляд деталей. Здається, ви повинні вказати і ідентифікатор перегляду, і режим, а для перегляду «Подробиці» відповідне значення режиму - 4. Дивіться цю статтю ; на жаль, у мене немає більш чіткого посилання (наприклад, Microsoft).

  • "FolderType" = "NotSpecified" вимикає автоматичне виявлення типу папки, що, здається, заважає цьому рішенню.

Наскільки я можу сказати, це стосується подання папки "Деталі" до всіх фізичних папок.

Відомі / спеціальні папки

Однак, схоже, у Windows є інший тип папки під назвою "відома" або "спеціальна" папка. Провідник зазвичай показує деякі з цих папок на лівій панелі або у спадному меню зліва від адресного рядка:

Спеціальні папки в Провіднику

Ось список відомих ідентифікаторів папок.

На своєму комп’ютері ви можете знайти спеціальні папки, перелічені в:

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

За допомогою цього інструменту ви також можете переглянути спеціальні папки на своєму комп’ютері .

Я хочу встановити вигляд папки для всіх спеціальних папок так само, як це було зроблено для всіх фізичних папок. Однак я не можу сказати, як Windows вирішує, який вид папки застосувати до спеціальної папки.

Ось що я знаю. Припустимо, я відкриваю спеціальну папку "Бібліотеки \ Документи", в якій посібник FolderDescription {7B0DB17D-9CD2-4A93-9733-46CC89022E7C}. Провідник показує цю папку у вікні "Великі іконки", що суперечить виду папки, яку я намагався встановити на всі папки раніше.

Коли я оновлюю 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 говорить про те, що цей вид обрано, оскільки він займає №1 для шаблону цієї папки.

Я не знаю, як Windows вирішує застосувати перегляд папок Large Icons на основі цієї інформації "TopView". Я шукав у реєстрі "{82ba0782-5b7a-4569-b5d7-ec83085f08cc}", але він відображається лише як значення TV_TopViewID у Shell \ Bags або у списках 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-000000000000}]

    "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 має той самий набір TopViews, як і загальний шаблон папок. Це призводить до того, що Провідник використовує подання папки, яку я вказав для загального шаблону папок ще в HKEY_CURRENT_USER \ Software \ Classes \ Local Settings \ Software \ Microsoft \ Windows \ Shell \ Bags \ AllFolders.

Необхідність заміни списку TopViews для кожного шаблону папок здається грубою (як, наприклад, я виправляю проблему нижче за те, де я повинен) і, можливо, небезпечною (тому що я не знаю точно, як це все працює).

Підсумок

Підводячи підсумок, я хочу сказати Windows застосувати перегляд папок за замовчуванням до всіх спеціальних / відомих папок, а також до всіх фізичних папок.

Я також хотів би знати:

  • Як Windows визначає FolderType (шаблон папки) для заданої FolderDescription (спеціальна папка).

  • Як Windows визначає подання папки (Деталі, Список тощо) для заданого типу FolderType. Я можу зробити висновок, що він шукає TopView для FolderType, але я не знаю, як це переводить це у подання папки.

Я шукав, але не можу знайти цей матеріал документально зафіксований ніде.

Дякую і, будь ласка, повідомте мене, чи можу я надати додаткову інформацію.

Редагувати: Я сказав "Windows 7 або новішої версії", оскільки я збираю питання реєстру, змінені між XP та 7.

Редагувати:

Краще рішення

Я знайшов кращий спосіб встановити вигляд папки для спеціальних папок, хоча це не так елегантно, як встановлення перегляду папок для звичайних папок.

Скажіть, я переглядаю спеціальну папку «Бібліотеки \ Документи». 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} - шаблон папки, пов'язаний з Бібліотеками \ Документами.

{82BA0782-5B7A-4569-B5D7-EC83085F08CC} - це TopView із замовленням 1, пов’язаним із шаблоном папки.

Я роблю наступне:

  1. Залиште ключі в спокої.

  2. Видаліть усі значення, крім Vid і Mode.

  3. Встановіть режим на 4, а для Vid - {137E7700-3573-11CF-AE69-08002B2E1262}.

  4. Наступного разу, коли я перейду до розділу «Бібліотеки \ Документи», він відкриє вигляд папки «Деталі». Мені навіть не доведеться перезавантажувати Провідник.

Я в змозі встановити подання папок для інших спеціальних папок так само.

Як виявляється, якщо я просто перейду до всіх спеціальних папок і встановлю перегляд папок на кожну, я закінчую тими самими записами реєстру, як ніби я їх встановлюю вручну.

Хороша новина - я можу це зробити, а потім експортувати HKEY_CURRENT_USER \ Software \ Classes \ Local Settings \ Software \ Microsoft \ Windows \ Shell \ Bags \ AllFolders та розгорнути файл .reg на іншу машину.

Однак все-таки буде краще встановити перегляд папки один раз для всіх спеціальних папок.


1
Деякі налаштування папки зберігаються у файлі desktop.ini у цій папці. Увімкнути показ прихованого захищеного файлу, і ви можете побачити desktop.ini file.in у кожній папці.
Бісвапріо

Привіт Бісва, у своїй папці «Документи» (спеціальна) я бачу два файли desktop.ini, які містять деякі дані з написом «.ShellClassInfo», але нічого про налаштування перегляду папок. Та ж історія для інших спеціальних папок я відкрила навмання. Однак я не думав про desktop.ini, тому це може привести мене до отримання додаткової інформації про те, як визначаються налаштування перегляду папок. Дякую.
FSharpN00b

Крім того, ваш приклад малюнка посилався на Бібліотеки, а не папки. Вони можуть працювати по-різному, оскільки (прозоро) відображатимуться у кількох місцях. Але є варіанти відключити показ їх у Explorer.
Сет

Привіт Сет, так, я вважав, що їх просто відключити, але деякі з цих спеціальних папок я вважаю корисними. Я думаю, що проблема в основному вирішена - я створив файл. Коли я запускаю це на чистій VM, здається, працює. Я, швидше за все, викладу це як відповідь, як тільки я впевнено переконаюся, що всі перейми. Дякую.
FSharpN00b
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.