Ако сте једна од оних особа које фрустрирају менији пуни опција које не користите, лоше имплементиране интеграције или споро време отварања фасцикли, онда је ово за вас., дошли сте на право место.
У оперативном систему Windows можете изменити понашање програма Explorer и контекстног менија на неколико начина (укључујући Трикови за File Explorer у Windows-у 11): преко регистра, са класичним Shell екстензијама у облику DLL-ова, са модерним MSIX пакетима, па чак и креирањем сопствених екстензија у .NET-у или C++. Хајде да истражимо све ове могућности мирно, али без околине.
Шта су Shell екстензије и зашто Регистар не успева?
Windows Shell се може проширити на основни начин путем уноса у регистар и .ini датотекаОвај приступ је једноставан и обично довољан за прилагођавање икона према типу датотеке, додавање додатних команди или повезивање екстензија. Међутим, има значајно ограничење: све што дефинишете примењује се на нивоу типа датотеке, а не на појединачне датотеке.
Типичан пример је пример прилагођених икона по проширењу: ако у регистру доделите икону .docx датотеци, све Копије те врсте датотеке ће видети исту икону, чак и ако покушате да их разликујете. Постоје и области шкољке, попут листа са својствима који се појављује када кликнете десним тастером миша и изаберете својствакоји се једноставно не може изменити само помоћу кључева регистра.
Да бисте заиста контролисали Експлорер, потребно је да одете корак даље и користите руковаоце екстензија шкољке.То су COM компоненте (обично DLL-ови) које Shell позива сваки пут када изврши одређену радњу: приказивање иконе, отварање контекстног менија, приказивање сличице, приказивање објашњења алата итд. Explorer упитује драјвер непосредно пре извршавања операције, дајући му могућност да промени исход.
Веома чест пример је контролер контекстног менијаАко га креирате за одређени тип датотеке, Windows ће га позивати сваки пут када кликнете десним тастером миша на било коју датотеку тог типа. Ова компонента може да дода различите ставке менија у зависности од одређене датотеке, броја изабраних ставки, путање итд., што је немогуће постићи само једноставним повезивањем команди у регистру.
Унутар ове породице контролера постоје две главне групеТо су команде које су везане за одређене типове датотека (и раде „по датотеци“) и оне које се извршавају у општим Shell операцијама (без зависности од одређене екстензије). Њихово детаљније разматрање помаже вам да разумете њихова ограничења.
Главни контролери повезани са типовима датотека
Руковаоци засновани на типу датотеке вам омогућавају да прилагодите понашање Експлорера за одређене екстензије датотека.Они раде на нивоу појединачних датотека, тако да можете прилагодити меније, иконе или својства у зависности од сваког елемента.
- Контролер контекстног менија. Покреће се непосредно пре приказивања контекстног менија датотеке. Омогућава вам да додате додатне команде, преуредите ставке и прикажете опције само за одређене датотеке или ситуације (на пример, ако је изабрано више датотека, ако је у питању посебна фасцикла итд.).
- Руковалац подацима. Долази до изражаја у операцијама превлачења и испуштања на Shell објектима. Може допринети Додатни формати међуспремника тако да одредиште има више информација (на пример, алтернативни приказ у XML или бинарном формату).
- Руковалац испуштања. Ова команда се позива када превлачите или испуштате податке на одређену датотеку. Она омогућава да датотека служи као одредиште за операцију превлачења и испуштања, на пример, испуштање више датотека у .zip датотеку или базу података.
- Руковалац иконама. Позива се пре него што Shell прикаже икону датотеке. Омогућава вам да замените генеричку икону типа датотеке прилагођено генерисаном иконом за сваку датотеку, што је веома корисно за елементе као што су слике, пројектни документи, статуси синхронизације итд., а за ово је препоручљиво прегледати најбоља проширења за Explorer.
- Контролер листа имовине. Активира се када ћете приказати дијалошки оквир својства објекта. Можете га користити за додавање додатних картица или замену неких од постојећих, тако да ваша апликација приказује своја подешавања директно на картици својстава датотеке.
- Руковалац сличица. Генерише слику коју видите у сличици Explorer-а. Ово омогућава да видео датотека прикаже репрезентативни кадар или неуобичајени формат слике који се може прегледати без ослањања на спољне апликације.
- Руковалац инфотипова. Ово се користи за генерисање објашњења које се појављује када задржите показивач миша изнад датотеке. Овде можете приказати релевантне метаподатке: трајање звука, резолуцију фотографије, статус документа итд.
- Контролер метаподатака. Омогућава приступ за читање и писање својстава сачуваних у датотеци. Захваљујући њему, можете проширити поглед на Детаљније, информације о алаткама, групе и додатне колоне са прилагођеним метаподацима.
Остали Shell драјвери који нису везани за тип датотеке
Поред драјвера који зависе од типа датотекеПостоје и други које Shell позива пре одређених општих операција Explorer-а. То су они који омогућавају прилагођавања вишег нивоа.
- Контролер колоне. Приказ се проверава пре него што се прикаже. Детаљније из фасцикле. Користи се за додавање прилагођених колона (на пример, „Оцена“, „Интерни аутор“, „Статус валидације“) које се попуњавају информацијама које је израчунало ваше проширење.
- Руковалац куке за копирање. Ова команда се позива када систем треба да премести, копира, обрише или преименује фасциклу или штампач. Омогућава вам да одобрите или блокирате ту операцију, што је веома корисно у безбедносним решењима, корпоративним политикама или надгледаним фасциклама.
- Контекстуални програм за превлачење и испуштање. Ово се позива када превучете датотеку десним тастером миша. Можете изменити контекстни мени који се појављује када отпустите тастер миша, укључујући посебне радње као што су „Конвертуј и премести“, „Отпреми и обриши оригинал“ итд.
- Руковалац преклапања икона. Додајте мали маркер икони датотеке или фасцикле (на пример, зелени знак потврде за синхронизоване датотеке или знак узвика). Шел позива ово непосредно пре цртања иконе, а ваш код одлучује који слој ће применити.
- Контролер претраге. Користи се за покретање прилагођених претраживача интегрисаних у саму командну шкољку. Помоћу њега можете да отворите сопствени претраживач, доступан из менија. иницирање или из Explorer-а, који ради на удаљеним подацима или нестандардним структурама.

Проширења именског простора: виртуелне фасцикле у Explorer-у
Windows Explorer не учи само традиционални систем датотекаЗаправо одражава комплетан „именски простор“ који укључује виртуелне фасцикле попут корпе за отпатке, библиотека или штампача. Са екстензијом именског простора можете обухватити било коју групу података и представити је као да је обична фасцикла.
Када креирате проширење именског простора, Explorer приказује ваше податке као хијерархију фасцикли и датотека.Чак и ако се заправо налазе у бази података, на удаљеном уређају или су једноставно логичке везе (као код штампача), понашају се као било која друга фасцикла према кориснику: могу да копирају, премештају, бришу, прегледају својства, па чак и да врше претраге.
Технички, свака фасцикла видљива у Експлореру је представљена COM објектом који се назива „објекат фасцикле“Када корисник интерагује са том фасциклом или њеним садржајем, Shell комуницира са тим објектом путем стандардних интерфејса као што су IShellFolderОбјекат одговара на захтеве (ставке листе, иконе враћања, имена, атрибути…) и шкољка ажурира графички интерфејс.
Овај модел је посебно користан када се ваши подаци не уклапају добро у стандардну структуру датотека и фасцикли.Замислите базу података којом желите да се крећете као да су то фасцикле, садржај дигиталног фотоапарата без Windows система датотека или колекција чисто логичких објеката (на пример, задаци штампања у реду чекања).
Проширење именског простора је углавном подељено на два делаМенаџер података (како и где чувате информације, у складу са вашим жељама) и слој интерфејса са Explorer-ом који пакује те податке као фасцикле и датотеке. Овај други део имплементира COM интерфејсе тако да DefView (подразумевани приказ фасцикли) и остатак Shell-а знају како да прикажу и манипулишу садржајем.
Како прикази Explorer-а интерагују са екстензијом
Прозор Explorer-а се састоји од неколико области: приказа стабла, приказа фасцикли, траке са менијима и алаткама и статусне траке.Када уђете у фасциклу којом управља ваша екстензија именског простора, ваш код може утицати на све њих, мада у различитом степену.
Приказ стабла приказује поглед на хијерархију на високом нивоуСадржи TreeView контролу која приказује сваку фасциклу у именском простору и њену позицију. Одавде корисник може проширивати нивое, превлачити фасцикле, користити контекстни мени или отварати подфасцикле. Експлорер првенствено комуницира путем IShellFolder, захтевање атрибута, навођење подфасцикли, захтевање приказаних имена и икона.
Приказ фасцикли (десни панел са датотекама) је још флексибилнијиЗа разлику од приказа стабла, Explorer не контролише директно свој садржај; он једноставно креира подређени прозор и прослеђује га вашем објекту фолдера. Тај прозор може да садржи класични ListView, контролу веб прегледача са динамичким HTML-ом или било шта друго што има смисла за ваше податке.
Уобичајена пракса је поновна употреба DefView-а помоћу функције SHCreateShellFolderViewОво вам даје стандардни приказ са иконама, детаљима, сортирањем, групама итд. и омогућава вам да се фокусирате на пружање података. Међутим, ако вам је потребна веома специфична презентација, можете креирати потпуно прилагођен приказ.
Мени и траке са алаткама у програму Explorer могу се прилагодити из вашег проширења.Љуска открива интерфејс iShellBrowserОво вам омогућава да додајете или уклањате дугмад и ставке менија или да реагујете на одређене команде. Када корисник кликне на прилагођено дугме, Експлорер прослеђује поруку. WM_COMMAND до вашег прозора како бисте могли да обрадите акцију.
Статусна трака је још један веома користан каналИз истог iShellBrowser Можете ажурирати текст да бисте приказали контекстуалне информације о изабраном објекту, броју ставки, грешкама у вашем проширењу итд., чиме се побољшава осећај интеграције са системом.
Креирајте екстензије прегледача користећи .NET библиотеку класа
Ако развијате у .NET-у, постоји могућност коришћења библиотеке са основним класама како би се поједноставило креирање многих од ових екстензија.Идеја је веома једноставна: креирате пројекат библиотеке класа, додате COM класу и учините да она наслеђује основну класу која одговара типу проширења које желите да имплементирате.
На пример, BrowserHelperObjectBase олакшава креирање објеката помоћника прегледача за Internet Explorerмапирање метода, догађаја и својстава прегледача на ваш код. Излажете ствари попут инстанце IE-а (својство Интернет претраживач), прозор у коме се објекат покреће (Сајти бавите се догађајима као што су При конекцији u При искључивању.
ContextMenuHandlerBase поједностављује креирање контекстних менија за ExplorerСамо треба да попуните колекцију Ставке менија са објектима MenuItem, као што бисте то урадили у Windows Forms форми, и повежите се са догађајем Kliknite сваке опције. Некретнина Филес Даје вам листу изабраних датотека и метод Изабрано у менију Користи се за ажурирање текста помоћи у статусној траци.
Са DropHandlerBase имплементирате руковаоце превлачења и испуштања повезане са датотекомИмате својства као што су Датотеке (одредиште на које се датотеке отпуштају) и Филес (оне вучене), и метода као што су При превлачењу/уносу, При превлачењу, При превлачењу/остављању y При превлачењу/испуштању да реагује на сваку фазу отпора.
IconHandlerBase вам омогућава да вратите икону коју ће Explorer приказати. за сваку датотеку. Од При преузимању иконе (OnGetIconLocation) ви одлучујете где је икона и у Икона за издвајање Враћате специфичне обрађиваче икона, уз могућност генерисања сличица или напредних репрезентација.
Регистрација ових .NET екстензија се врши преко COM-а користећи regasm.exe.Основне класе укључују методе означене са Функција регистра ком y Функција за одјаву из регистрације Ове класе су одговорне за креирање или брисање одговарајућих уноса у регистар када региструјете склоп. Поред тога, многе од ових класа подржавају атрибут. Типови датотека екстензије да назначе на које типове датотека утичу (ово може бити листа одвојена зарезима или џокер * за све).
Замените или измените љуску (explorer.exe) на системском нивоу
Још један начин да се радикално „додирне“ Windows окружење јесте промена подразумеване љускеТо јест, програм који се покреће када се пријавите. На системима са једном наменом (киосци, индустријски уређаји, терминали) понекад не желите да се покреће Explorer, већ једна апликација преко целог екрана; ако су вам потребне друге опције, погледајте алтернативе за Windows Explorer.
У Windows Server и клијентским окружењима, ово понашање се контролише путем регистра., у кључу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ShellЗаменом вредности путањом до извршне датотеке, осигуравате да се ваш програм учита уместо класичног Експлорера када се пријавите.
Опрез је овде јасан.Онемогућавање explorer.exe као командне линије оставља крајњег корисника без радне површине, траке задатака или прозора фасцикли, тако да је то опција која је најпогоднија за затворене системе. Поред тога, увек је препоручљиво имати алтернативни метод администрирања и опоравка (RDP, безбедни режим, GPO итд.).
Прилагодите Windows 11 File Explorer из регистра
Поред COM екстензија, многи корисници једноставно желе да уклоне досадне опције из контекстног менија или да врате класично понашање.У оперативном систему Windows 11, редизајн менија десног клика и интеграција функција попут Copilot-а изазвали су доста критика, посебно међу напредним корисницима.
Прво што морате имати на уму је да петљање са Регистром није шала.Нетачна промена може дестабилизовати систем, зато прво направите тачку враћања или резервну копију регистра. И, наравно, обавезно копирајте путање тачно онако како је приказано.
Да бисте отворили уређивач регистра, једноставно откуцајте „regedit“ у менију „Старт“. и бацити Уредник регистраОдатле можете да се крећете кроз сваку грану коју ћемо поменути и да креирате кључеве, вредности низова или DWORD параметре по потреби.
Уклоните „Питајте копилота“ и друге ставке из контекстног менија
Ако имате инсталирану апликацију или интеграцију 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} сакрити „Уреди помоћу бележнице“.
- {8BCF599D-B158-450F-B4C2-430932F2AF2F} да уклоните опцију Цлипцхамп.
- {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).
Побољшајте перформансе Експлорера подешавањем приказа фасцикле
Претраживач датотека може постати прилично спор ако Windows покуша да примени одређене шаблоне фасцикли на сваку путању. (на пример, „Слике“, „Видео снимци“, „Документи“ итд.) и мора да анализира садржај да би одлучио који приказ да користи. Ово је посебно приметно на рачунарима са много датотека или механичким чврстим дисковима.
Један трик за убрзавање навигације је да кажете систему да третира све фасцикле као генеричке.тако да је анализа директнија. Ово се постиже у кључу HKEY_CURRENT_USER\Софтвер\Класе\Локална подешавања\Софтвер\Мајкрософт\Виндоус\Шел\Кече\Све фасцикле\Шел.
Унутар овог кључа, креирајте стринг вредност под називом FolderType и додељује као садржај Није прецизираноСачувајте измене и поново покрените рачунар или се одјавите и поново пријавите.
Када поново отворите Explorer, приметићете да је пребацивање фасцикли глађе.Поготово ако често радите са датотекама које садрже хиљаде датотека или широк спектар типова датотека. Није магија, али помаже да се уштеди време ту и тамо. Ово подешавање је посебно корисно ако Истраживач је спор.
Интеграција Explorer-а са MSIX-пакованим апликацијама
До сада смо углавном говорили о екстензијама регистрованим директно у РегиструОво је класичан приступ који користе MSI или ClickOnce инсталатери. Ове технологије креирају кључеве у различитим гранама регистра за регистрацију контекстних менија, асоцијација датотека и тако даље.
Са апликацијама пакетираним у MSIX-у, слика се мењаРегистар је виртуелизован за апликацију и више се не можете ослањати на њега за регистрацију проширења Explorer-а. Уместо тога, морате користити проширења пакета дефинисано у манифесту пакета (Package.appxmanifest), где декларишете асоцијације типова датотека, глаголе контекстног менија и COM сервере.
Најједноставнији начин интеграције са Explorer-ом на MSIX-у је путем екстензије windows.fileTypeAssociationДекларишете које типове датотека подржавате (на пример, .foo), које параметре ваш извршни фајл добија када корисник отвори једну од тих датотека и који додатни глаголи ће се појавити у контекстном менију (на пример, „Промени величину датотеке“).
Елемент FileTypeAssociation дефинише логичко име асоцијације и типове које она подржава.У свом атрибуту parametri Обично иде барем %1што представља путању до изабране датотеке. Унутар, елемент Подржани типови датотека Наведите специфичне екстензије (.foo, .bar, итд.) и Подржани глаголи Садржи глаголе који ће бити додати у контекстни мени са сопственим параметрима.
Постоје два важна ограничења овог моделаМожете приказати само глаголе за типове датотека које ваша апликација већ има повезане са њом, и они ће бити приказани само ако је ваша апликација подразумевана за тај тип. Штавише, глагол може покренути само главну извршну датотеку апликације (иако са различитим параметрима), а не другу произвољну EXE датотеку.
Напредна Shell COM проширења у MSIX пакетима
Ако треба да идете даље (контролишите генеричке фасцикле, покрените друге задатке или не отварајте главну апликацију сваки пут)Опција је да се креира класично Shell COM проширење (DLL) и региструје у MSIX манифесту, уместо коришћења системског регистра.
Shell COM екстензија је у основи DLL која открива једну или више COM класа са јединственим CLSID-ом.Windows учитава ову DLL датотеку када Explorer треба да прикаже контекстни мени, иконе, сличице итд. и позива методе као што су GetTitle, Преузми икону, Добиј савет o призвати (у случају команди менија).
Типична имплементација се врши у C++ због перформанси и потрошње меморије.Класичан пример је пројекат сличан „ExplorerCommandVerb“, где класа CExplorerCommandVerb Команда менија је имплементирана. Метод призвати То је она која се покреће када корисник кликне на ваш унос у контекстном менију, и одатле можете да урадите практично све што желите: да прикажете дијалошке прозоре, покренете друге процесе, обрадите неколико ставки итд.
Да бисте регистровали COM сервер у MSIX пакету, користите именски простор com у манифесту.На чвору com:Категорија екстензије=»windows.comСервер» Декларишете COM сервер, тип сервера (на пример, Сурогатни сервери унутар елемента com:Разред где назначите Id (ваш CLSID) и Путања (DLL који садржи имплементацију).
Интеграција са прегледачем датотека се врши касније коришћењем екстензије windows.fileExplorerContextMenus, декларисано унутар чвора desktop4:ПроширењеОн дефинише један или више desktop5:ТипИмејка (на пример, именик, * или одређено проширење) и, унутар, елемената десктоп5:Глагол који се односе на ваш CLSID.
DLL датотека мора бити упакована унутар MSIX-а и копирана заједно са апликацијом.Ако користите пројекат паковања Windows апликација, најлакши начин је да додате DLL датотеку у пројекат и означите је да се увек копира у излазни директоријум или да аутоматизујете копирање догађајем након компилације у C++ пројекту.
Након инсталирања MSIX пакета, Explorer неће учитати ново проширење док се поново не покрене.Можете поново покренути цео рачунар или прекинути процес. екплорер.еке Отворите Менаџер задатака и поново покрените рачунар. Од тог тренутка, нови мени ће се појављивати тамо где сте га навели.
Заједно, екосистем Shell екстензија, подешавања регистра и MSIX манифеста вам омогућава да подигнете File Explorer на виши ниво.Било да је у питању чишћење претрпаних менија, убрзавање навигације, интеграција сопствених апликација или чак претварање сложених структура података у кориснички прилагођене „фасцикле“, уз мало пажње при модификовању регистра и добро планирање COM екстензија, можете имати Explorer савршено прилагођен вашим потребама без жртвовања стабилности система.
