Ако сте от хората, които се разочароват от менюта, пълни с опции, които не използват, лошо внедрени интеграции или бавно отваряне на папки, тогава това е за вас., попаднали сте на правилното място.
В Windows можете да промените поведението на Explorer и контекстното меню по няколко начина (включително Трикове на File Explorer в Windows 11): чрез системния регистър, с класически разширения на Shell под формата на DLL файлове, със съвременни MSIX пакети и дори чрез създаване на ваши собствени разширения в .NET или C++. Нека разгледаме всички тези възможности спокойно, но без да се лутаме.
Какво представляват разширенията на Shell и защо системният регистър е непълен?
Обвивката на Windows може да бъде разширена по основен начин чрез записи в системния регистър и .ini файловеТози подход е прост и обикновено достатъчен за персонализиране на икони по тип файл, добавяне на допълнителни команди или асоцииране на разширения. Той обаче има значително ограничение: всичко, което дефинирате, се прилага на ниво тип файл, а не за отделни файлове.
Типичен пример е този на персонализираните икони чрез разширение: ако в системния регистър зададете икона на .docx файла, todas Копия от този тип файлове ще виждат една и съща икона, дори ако се опитате да ги различите. Има и области на Shell, като например листа със свойства, който се появява, когато щракнете с десния бутон и изберете свойствакоито просто не могат да бъдат променени само с помощта на ключове от системния регистър.
За да контролирате наистина Explorer, трябва да направите още една крачка напред и да използвате манипулатори на разширения на обвивката.Това са COM компоненти (обикновено DLL файлове), които Shell извиква всеки път, когато извършва определено действие: показване на икона, отваряне на контекстно меню, рендиране на миниатюра, показване на подсказка и т.н. Explorer запитва драйвера непосредствено преди изпълнение на операцията, давайки му възможност да промени резултата.
Много често срещан пример е контролерът на контекстното менюАко създадете такъв за даден тип файл, Windows ще го извиква всеки път, когато щракнете с десния бутон върху файл от този тип. Този компонент може да добавя различни елементи от менюто в зависимост от конкретния файл, броя на избраните елементи, пътя и т.н., нещо, което е невъзможно да се постигне само с проста асоциация на команда в системния регистър.
В рамките на това семейство контролери има две основни групиТова са командите, които са обвързани със специфични типове файлове (и работят „за всеки файл“) и тези, които се изпълняват в общи операции на Shell (без да зависят от конкретно разширение). Разглеждането им по-подробно ще ви помогне да разберете техните ограничения.
Основни контролери, свързани с файлови типове
Обработчиците, базирани на типове файлове, ви позволяват да персонализирате поведението на Explorer за конкретни файлови разширения.Те работят на ниво отделен файл, така че можете да адаптирате менюта, икони или свойства в зависимост от всеки елемент.
- Контролер на контекстното меню. Изпълнява се непосредствено преди показване на контекстното меню на файла. Позволява ви да добавяте допълнителни команди, да пренареждате елементи и да показвате опции само за конкретни файлове или ситуации (например, ако са избрани няколко файла, ако е специална папка и т.н.).
- Обработчик на данни. Това се използва при операции с плъзгане и пускане на Shell обекти. Може да допринесе Допълнителни формати на клипборда така че дестинацията да има повече информация (например, алтернативно представяне в XML или двоичен формат).
- Манипулатор за пускане. Тази команда се извиква, когато плъзгате или пускате данни върху конкретен файл. Тя позволява на даден файл да действа като местоназначение за операция „плъзгане и пускане“, например пускане на множество файлове върху .zip файл или база данни.
- Обработчик на икони. Извиква се преди Shell да покаже икона на файл. Позволява ви да замените генеричната икона на даден тип файл с персонализирана такава за всеки файл, което е много полезно за елементи като изображения, документи на проекти, състояния на синхронизация и др., и за това е препоръчително да прегледате най-добрите разширения за Explorer.
- Контролер на листове за имоти. Активира се, когато сте на път да покажете диалоговия прозорец свойства на обект. Можете да го използвате, за да добавите допълнителни раздели или да замените някои от съществуващите, така че приложението ви да показва настройките си директно в раздела със свойствата на файла.
- Манипулятор на миниатюри. Той генерира изображението, което виждате в миниатюрата на Explorer. Това позволява на видеофайл да показва представителен кадър или необичаен формат на изображение, който да бъде прегледан, без да се разчита на външни приложения.
- Обработчик на информационни подсказки. Това се използва за генериране на подсказка, която се появява, когато задържите курсора на мишката върху файл. Тук можете да покажете съответните метаданни: продължителност на звука, резолюция на снимката, състояние на документа и др.
- Контролер на метаданни. Той осигурява достъп за четене и запис до свойствата, съхранени във файл. Благодарение на него можете да разширите изгледа на Детайли, информация за подсказки, групировки и допълнителни колони с персонализирани метаданни.
Други драйвери на Shell, които не са свързани с файлов тип
В допълнение към драйверите, които зависят от тип файлИма и други, които Shell извиква преди определени общи операции на Explorer. Това са тези, които позволяват персонализиране на по-високо ниво.
- Контролер на колоната. Изгледът се проверява преди да бъде показан. Детайли от папка. Използва се за добавяне на персонализирани колони (например „Рейтинг“, „Вътрешен автор“, „Статус на валидиране“), които се попълват с информация, изчислена от вашето разширение.
- Манипулатор на куки за копиране. Тази команда се извиква, когато системата е на път да премести, копира, изтрие или преименува папка или принтер. Тя ви позволява да одобрите или блокирате тази операция, което е много полезно в решения за сигурност, корпоративни политики или наблюдавани папки.
- Контекстуален манипулатор за плъзгане и пускане. Това се извиква, когато плъзнете файл с десния бутон на мишката. Можете да промените контекстното меню, което се появява, когато отпуснете бутона на мишката, като включите специални действия като „Конвертиране и преместване“, „Качване и изтриване на оригинала“ и др.
- Манипулатор за наслагване на икони. Добавете малък маркер към икона на файл или папка (например зелената отметка за синхронизирани файлове или удивителен знак). Обвивката извиква това точно преди да нарисува иконата и вашият код решава кое наслагване да приложи.
- Контролер за търсене. Използва се за стартиране на персонализирани търсачки, интегрирани в самата обвивка. С него можете да изложите своя собствена търсачка, достъпна от менюто. започване или от Explorer, който работи с отдалечени данни или нестандартни структури.

Разширения на именни пространства: виртуални папки в Explorer
Windows Explorer не само учи на традиционната файлова системаВсъщност това отразява цялостно „пространство от имена“, което включва виртуални папки като кошчето, библиотеките или принтерите. С разширение на пространство от имена можете да оградите произволен набор от данни и да го представите като нормална папка.
Когато създавате разширение за именно пространство, Explorer показва данните ви като йерархия от папки и файлове.Дори ако те действително се намират в база данни, на отдалечено устройство или са просто логически връзки (както при принтерите), те се държат като всяка друга папка за потребителя: могат да копират, преместват, изтриват, преглеждат свойства и дори да извършват търсения.
Технически, всяка папка, видима в Explorer, е представена от COM обект, наречен „обект на папка“Когато потребителят взаимодейства с тази папка или нейното съдържание, Shell комуникира с този обект чрез стандартни интерфейси, като например IShellFolderОбектът отговаря на заявки (елементи от списъка, икони за връщане, имена, атрибути...) и Shell актуализира графичния интерфейс.
Този модел е особено полезен, когато данните ви не се вписват добре в стандартната структура на файловете и папките.Представете си база данни, в която искате да навигирате, сякаш е папка, съдържанието на цифров фотоапарат без файлова система на Windows или колекция от чисто логически обекти (например задания за печат в опашка).
Разширението на именното пространство е общо взето разделено на две частиМениджър на данни (как и къде съхранявате информацията, според вашите предпочитания) и интерфейсен слой с Explorer, който пакетира тези данни като папки и файлове. Тази втора част е това, което имплементира COM интерфейсите, така че DefView (изгледът на папки по подразбиране) и останалата част от Shell знаят как да показват и манипулират съдържанието.
Как изгледите на Explorer взаимодействат с разширение
Прозорецът на Explorer се състои от няколко области: дървовиден изглед, изглед на папки, ленти с менюта и инструменти и лента на състоянието.Когато влезете в папка, управлявана от вашето разширение за именни пространства, вашият код може да повлияе на всички тях, макар и в различна степен.
Дървовидният изглед показва изглед на йерархията от високо нивоТой съдържа контрола TreeView, която показва всяка папка в пространството от имена и нейната позиция. Оттук потребителят може да разширява нивата, да плъзга папки, да използва контекстното меню или да отваря подпапки. Explorer комуникира основно чрез IShellFolder, заявка за атрибути, изброяване на подпапки, заявка за показвани имена и икони.
Изгледът на папките (десният панел с файловете) е още по-гъвкавЗа разлика от дървовидния изглед, Explorer не контролира директно съдържанието си; той просто създава дъщерен прозорец и го предава на вашия обект папка. Този прозорец може да съдържа класически ListView, контрол на уеб браузър с динамичен HTML или каквото и да е друго, което има смисъл за вашите данни.
Обичайната практика е DefView да се използва повторно, като се използва функцията SHCreateShellFolderView.Това ви дава стандартния изглед с икони, подробности, сортиране, групи и т.н. и ви позволява да се съсредоточите върху предоставянето на данните. Ако обаче се нуждаете от много специфично представяне, можете да създадете напълно персонализиран изглед.
Менюто и лентите с инструменти на Explorer могат да бъдат персонализирани от вашето разширение.Обвивката разкрива интерфейса IShellBrowserТова ви позволява да добавяте или премахвате бутони и елементи от менюто или да реагирате на конкретни команди. Когато потребителят щракне върху персонализиран бутон, Explorer препраща съобщението. WM_COMMAND към прозореца ви, за да можете да обработите действието.
Лентата на състоянието е друг много полезен каналОт същото IShellBrowser Можете да актуализирате текста, за да показва контекстуална информация за избрания обект, броя на елементите, грешките във вашето разширение и т.н., като по този начин подобрите усещането за интеграция със системата.
Създаване на разширения за браузър с помощта на библиотека с класове .NET
Ако разработвате в .NET, има възможност да използвате библиотека с базови класове, за да опростите създаването на много от тези разширения.Идеята е много проста: създавате проект от библиотека с класове, добавяте COM клас и го правите да наследява от базовия клас, който съответства на типа разширение, което искате да имплементирате.
Например, BrowserHelperObjectBase улеснява създаването на помощни обекти на браузъра за Internet Explorer.съпоставяне на методи, събития и свойства на браузъра с вашия код. Вие предоставяте неща като екземпляра на IE (свойство Internet Explorer), прозорецът, в който се изпълнява обектът (Мястои вие се справяте със събития като При свързване u При прекъсване на връзката.
ContextMenuHandlerBase опростява създаването на контекстни менюта за ExplorerПросто трябва да попълните колекцията Елементи от менюто с обекти MenuItem, както бихте направили във формуляр на Windows Forms, и се свържете със събитието Кликнете от всяка опция. Имотът Файлове Дава ви списък с избрани файлове и метода В менютоИзбрано Използва се за актуализиране на помощния текст в лентата на състоянието.
С DropHandlerBase имплементирате манипулатори за плъзгане и пускане, свързани с файл.Имате свойства като Име на файл (местоположението, където се пускат файловете) и Файлове (влачените) и на методи като Приплъзване/Влизане, Приплъзване, ПриплъзванеНапускане y ПриплъзванеПускане да реагира на всяка фаза на плъзгането.
IconHandlerBase ви позволява да върнете иконата, която Explorer ще покаже. за всеки файл. От OnGetIconLocation вие решавате къде е иконата и в Икона за извличане Връщате специфичните манипулатори на икони, като можете да генерирате миниатюри или разширени представяния.
Регистрацията на тези .NET разширения се извършва чрез COM, използвайки regasm.exe.Базовите класове включват методи, маркирани с Функция за ComRegister y Функция за отмяна на регистрацията на Com Тези класове са отговорни за създаването или изтриването на съответните записи в системния регистър, когато регистрирате асемблирането. Освен това, много от тези класове поддържат атрибута. Типове файлове с разширения за да посочат кои типове файлове засягат (това може да бъде списък, разделен със запетаи, или заместващият символ * за всички).
Заменете или променете обвивката (explorer.exe) на системно ниво
Друг начин радикално да се „докосне“ средата на Windows е да се промени обвивката по подразбиранеТоест, програмата, която се стартира, когато влезете в системата. В системи с едно предназначение (киоски, индустриални устройства, терминали) понякога не искате Explorer да работи, а по-скоро едно приложение на цял екран; ако имате нужда от други опции, вижте алтернативи на Windows Explorer.
В Windows Server и клиентски среди това поведение се контролира чрез системния регистър., в тоналността HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ShellКато замените стойността с пътя до изпълнимия файл, вие гарантирате, че вашата програма ще се зареди вместо класическия Explorer, когато влезете.
Предпазливостта тук е ясна.Деактивирането на explorer.exe като обвивка оставя крайния потребител без работен плот, лента на задачите или прозорци с папки, така че това е опция, най-подходяща за затворени системи. Освен това винаги е препоръчително да имате алтернативен метод за администриране и възстановяване (RDP, безопасен режим, GPO и др.).
Персонализирайте Windows 11 File Explorer от системния регистър
Освен COM разширенията, много потребители просто искат да премахнат досадните опции от контекстното меню или да възстановят класическото поведение.В Windows 11, препроектирането на менюто с десен бутон и интегрирането на функции като Copilot предизвикаха доста критики, особено сред напредналите потребители.
Първото нещо, което трябва да имате предвид, е, че бъркотията с системния регистър не е шега работа.Неправилна промяна може да дестабилизира системата, така че първо създайте точка за възстановяване или резервно копие на системния регистър. И, разбира се, не забравяйте да копирате пътищата точно както е показано.
За да отворите редактора на системния регистър, просто въведете „regedit“ в менюто „Старт“. и хвърлете Редактор на регистъраОттам можете да навигирате през всеки клон, който ще споменем, и да създавате ключове, низови стойности или DWORD параметри, ако е необходимо.
Премахнете „Ask Copilot“ и други записи от контекстното меню
Ако имате инсталирано приложението Copilot или интеграцията му на Windows 11Когато щракнете с десния бутон върху файл, вероятно ще видите опцията „Попитайте втория пилот“Този запис заема място в менюто и ако не използвате функцията, просто ви пречи.
За да го деактивирате от системния регистър, отидете на HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell ExtensionsВ този клон създайте нов ключ, наречен блокиранСлед като сте вътре, добавете нов верижна стойност чието име ще бъде {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} и оставете съдържанието празно.
Същият трик работи и за изчистване на други опции, като например „Редактиране с Notepad“, Paint или Clipchamp.Винаги работи под клона HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions и в рамките на ключа блокиранМожете да създавате различни низови стойности:
- {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} да се скрия „Редактиране с Notepad“.
- {8BCF599D-B158-450F-B4C2-430932F2AF2F} за да премахнете опцията Clipchamp.
- {2430F218-B743-4FD6-97BF-5C76541B4AE9} да се премахне интеграцията на Боя.
След като тези стойности са създадени, рестартирайте Explorer или компютъра си, така че Windows да презареди настройките.За да отмените някоя от тях, просто изтрийте съответната стойност или целия ключ. блокиран ако искате да си възстановите всички билети.
Върнете класическото контекстно меню на Windows 10
Една от най-обсъжданите промени в Windows 11 е новото, опростено контекстно меню.Не че е „лошо“ само по себе си, но много опитни потребители пропускат пълното меню на Windows 10, с всички опции видими, без да се налага да кликват върху „Покажи още опции“.
За да се върнете към класическия стил, можете да използвате друга малка модификация в системния регистър.. Отидете на HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID (Забележка: Не бъркайте това с клона .cls) и създайте нов ключ с името {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}.
В този новосъздаден ключ добавете още един, наречен InprocServer32В десния панел щракнете двукратно върху стойността (Предварително определено) И се уверете, че полето за данни е напълно празно. Приемете промените и затворете редактора.
След рестартиране на компютъра, щракването с десния бутон върху файлове или папки ще покаже контекстното меню, точно както е изглеждало в Windows 10.с всички традиционни опции, достъпни веднага. Ако решите да се върнете към оригиналното поведение на Windows 11, просто изтрийте този CLSID ключ (и неговия подключ InprocServer32).
Подобрете производителността на Explorer, като коригирате изгледа на папките
File Explorer може да стане доста бавен, ако Windows се опита да приложи специфични шаблони за папки към всеки път. (например „Изображения“, „Видеоклипове“, „Документи“ и др.) и трябва да анализира съдържанието, за да реши кой изглед да използва. Това е особено забележимо на компютри с много файлове или механични твърди дискове.
Един трик за ускоряване на навигацията е да кажете на системата да третира всички папки като общи.така че анализът да е по-директен. Това се постига в ключа HKEY_CURRENT_USER\Софтуер\Класове\Локални настройки\Софтуер\Microsoft\Windows\Shell\Bags\AllFolders\Shell.
В този ключ създайте низова стойност, наречена FolderType и присвоява като съдържание НеопределеноЗапазете промените и рестартирайте компютъра си или излезте и влезте отново.
Когато отворите отново Explorer, ще забележите, че превключването на папки е по-плавно.Особено ако често работите с файлове, съдържащи хиляди файлове или голямо разнообразие от типове файлове. Не е магия, но помага да спестите секунди от време на време. Тази настройка е особено полезна, ако Explorer е бавен.
Интеграция на Explorer с приложения, пакетирани с MSIX
Досега говорихме главно за разширения, регистрирани директно в РегистъраТова е класическият подход, използван от инсталаторите на MSI или ClickOnce. Тези технологии създават ключове в различни клонове на системния регистър, за да регистрират контекстни менюта, файлови асоциации и т.н.
С приложенията, пакетирани с MSIX, картината се променяРегистърът е виртуализиран за приложението и вече не можете да разчитате на него за регистриране на разширения на Explorer. Вместо това трябва да използвате разширения на пакети дефинирано в манифеста на пакета (Package.appxmanifest), където декларирате асоциации на файлови типове, глаголи за контекстно меню и COM сървъри.
Най-лесният начин за интеграция с Explorer на MSIX е чрез разширението windows.fileTypeAssociationВие декларирате какви типове файлове поддържате (например .foo), какви параметри получава вашият изпълним файл, когато потребителят отвори един от тези файлове, и какви допълнителни команди ще се появят в контекстното меню (например „Преоразмеряване на файл“).
Елементът FileTypeAssociation определя логическото име на асоциацията и типовете, които тя поддържа.В неговия атрибут параметри Обикновено стига поне %1който представлява пътя до избрания файл. Вътре, елементът Поддържани типове файлове Избройте конкретните разширения (.foo, .bar и др.) и Поддържани глаголи Той съдържа глаголите, които ще бъдат добавени към контекстното меню със собствени параметри.
Има две важни ограничения на този моделМожете да показвате глаголи само за типове файлове, които приложението ви вече е асоциирало с него, и те ще се показват само ако приложението ви е по подразбиране за този тип. Освен това, глаголът може да стартира само основния изпълним файл на приложението (макар и с различни параметри), а не друг произволен EXE файл.
Разширени разширения на Shell COM в MSIX пакети
Ако трябва да продължите напред (да контролирате общи папки, да стартирате други задачи или да не отваряте основното приложение всеки път)Опцията е да се създаде класическо разширение (DLL) на Shell и да се регистрира в манифеста на MSIX, вместо да се използва системният регистър.
Разширението на Shell COM е основно DLL, което предоставя един или повече COM класове с уникален CLSID.Windows зарежда тази DLL, когато Explorer трябва да покаже контекстното меню, иконите, миниатюрите и т.н., и извиква методи като GetTitle, GetIcon, GetTooltip o призовавам (в случай на команди от менюто).
Типичната имплементация се извършва на C++ поради причини, свързани с производителността и консумацията на памет.Класически пример е проект, подобен на „ExplorerCommandVerb“, където класът CExplorerCommandVerb Командата от менюто е реализирана. Методът призовавам Това е командата, която се изпълнява, когато потребителят щракне върху вашия запис в контекстното меню, и оттам можете да правите практически всичко, което искате: да показвате диалогови прозорци, да стартирате други процеси, да обработвате няколко елемента и т.н.
За да регистрирате COM сървъра в MSIX пакет, използвате пространството от имена com в манифеста.На възела com:Разширение Категория=»windows.comСървър» Декларирате COM сървъра, типа на сървъра (например, Сурогатен сървъри в рамките на един елемент com:Клас където посочвате Id (вашият CLSID) и Път (DLL, която съдържа имплементацията).
Интеграцията с файловия мениджър се извършва по-късно, използвайки разширението windows.fileExplorerContextMenus, деклариран във възел desktop4:РазширениеТой определя едно или повече desktop5:ТипНаЕлемент (например указател, * или специфично разширение) и, в рамките на, елементи desktop5:Глагол които препращат към вашия CLSID.
DLL файлът трябва да бъде пакетиран в MSIX и копиран заедно с приложението.Ако използвате проект за пакетиране на приложения за Windows, най-лесният начин е да добавите DLL файла към проекта и да го маркирате винаги да се копира в изходната директория или да автоматизирате копирането със събитие след компилация в C++ проекта.
След инсталиране на MSIX пакета, Explorer няма да зареди новото разширение, докато не се рестартира.Можете да рестартирате целия компютър или да прекратите процеса. explorer.exe Отворете диспечера на задачите и рестартирайте компютъра. От този момент нататък новият елемент от контекстното меню ще се появява там, където сте го посочили.
Взети заедно, екосистемата от разширения на Shell, настройки на системния регистър и MSIX манифести ви позволява да изведете File Explorer на друго ниво.Независимо дали става въпрос за почистване на претрупани менюта, ускоряване на навигацията, интегриране на собствени приложения или дори превръщане на сложни структури от данни в удобни за потребителя „папки“, с известно внимание при модифицирането на системния регистър и добро планиране на COM разширенията, можете да имате Explorer, перфектно пригоден за вашите нужди, без да жертвате стабилността на системата.
