A user upgrades to Windows 11, right-clicks a file, and the entry your line-of-business tool has put there for eight years is gone. The backup agent's "Restore previous version" is gone. The developer utility's "Open Bash here" is gone. Everything looks broken. Nothing is broken. The entries moved, and the reason they moved is a deliberate architectural change in the shell that has a documented, supported answer - and a widely-copied registry hack that is neither.
Windows 11 has two context menus. The compact one is drawn by a packaged COM class in Windows.UI.FileExplorer.dll and only shows commands registered through IExplorerCommand plus package identity. Every legacy in-process IContextMenu shell extension is demoted to the Windows 10 menu behind "Show more options" or Shift+F10, where Microsoft says nothing was removed. The famous fix - an empty InprocServer32 value under a per-user CLSID - works only because Microsoft documents that per-user class registrations outrank machine ones, is documented nowhere by Microsoft itself, has no Group Policy or CSP equivalent, and disables the modern menu for every app at once. The supported answer is to make the vendor ship IExplorerCommand, and in the meantime teach Shift+F10.
The problem: the entry is not missing, it is demoted
Start with the vocabulary, because half the confusion here comes from two words being used loosely.
A context menu - Microsoft's own documentation calls it a shortcut menu - is the list you get when you right-click something in File Explorer or on the desktop. A shell extension is a piece of third-party code that adds entries to that list. A shortcut menu handler, or context menu handler, is the specific kind of shell extension that does this.
Historically, a shortcut menu handler was a COM object - a Component Object Model object, meaning a class Windows can create on demand by GUID - implemented in a DLL. Explorer loaded that DLL into its own process and asked it for menu items. Every 7-Zip, TortoiseGit, WinMerge, Notepad++, antivirus scanner and backup agent right-click entry you have ever seen worked this way.
Windows 11 introduced a second, compact context menu. It is not a skin over the old one. It is a different menu, built by different code, from a different registration source. Legacy handlers are not enumerated for it at all.
So the symptom in the field looks like this. A helpdesk ticket says the enterprise backup client "lost its right-click integration after the Windows 11 upgrade". The vendor insists nothing changed. Both are telling the truth. The entry is one click away, under Show more options at the bottom of the compact menu.
Context, in Microsoft's own words. The Windows Developer Blog post that introduced the design states that "Show more options" loads the Windows 10 context menu as-is "for access to low-use Shell verbs and apps still working on porting over", and that "No commands have been removed entirely." The same post confirms that "Shift-F10 or the keyboard menu key will also load the Windows 10 context menu." Nothing is deleted. It is one keystroke away.
What happens next is the actual problem. An admin searches for "restore classic context menu Windows 11", finds a two-line reg add command on a forum, tests it on their own machine, sees it work instantly, and pushes it to ten thousand devices as a login script or an Intune platform script. That command is not in any Microsoft documentation. It has no Group Policy backing. It disables the new menu wholesale rather than restoring one app's entry. And its failure modes are quiet - which is the worst kind.
Why it happens: two menus, two registration models
Here is the chain, in order, from the moment the user right-clicks.
Path 1: the Windows 11 compact menu
- The user right-clicks a file in File Explorer. The window belongs to
explorer.exe. - Explorer builds the modern menu using the packaged COM class registered on this device under the CLSID
{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}, whose registered display name is File Explorer Context Menu and whose in-process server isC:\Windows\System32\Windows.UI.FileExplorer.dll. - Explorer places the common commands - cut, copy, rename, delete, share - as icons at the top.
- It then enumerates commands that apps have registered through the
windows.fileExplorerContextMenuspackage manifest extension. Microsoft's design guidance is that "App extensions are grouped together below Shell verbs", and that an app with more than one command is folded into a flyout attributed to that app. - For each such command, Explorer activates the app's COM class and calls its
IExplorerCommandmethods -GetTitle,GetIcon,GetState- to decide what to draw and whether it should be enabled. - The Show more options item is appended at the bottom.
Path 2: the Windows 10 menu behind Show more options
- The user clicks Show more options, or presses Shift+F10, or presses the dedicated menu key, or holds Shift while right-clicking.
- Explorer builds the classic menu using the long-standing shell code in
shell32.dllandwindows.storage.dll. - That code reads
HKEY_CLASSES_ROOTlooking forshellex\ContextMenuHandlerssubkeys under the relevant shell object -*for all files,Directoryfor folders,Directory\Backgroundfor the folder background, and so on. - For each handler subkey it reads the CLSID, resolves that CLSID to an
InprocServer32DLL, loads the DLL into the Explorer process, and callsIContextMenuon it. - It also reads static verbs registered under
HKEY_CLASSES_ROOT\<ProgID>\shell\<verb>.
Step 4 of Path 2 is the reason for the whole redesign. Microsoft's documentation on shortcut menu handlers is blunt about the risk: "Take care when creating in-process handlers as they can cause harm to the process that loads them." The developer blog is blunter still, noting that legacy commands "run in-process in Explorer, which can cause performance and reliability issues." A single badly written handler could hang or crash the shell for the whole session. The compact menu keeps that code off the fast path.
Gotcha: the handler subkey naming is inverted on some inbox handlers. Microsoft's registration rules say the handler subkey name is arbitrary and its (Default) value holds the CLSID. Several handlers that ship with Windows do the opposite - the subkey is named with the CLSID and the default value holds a description such as Start Menu Pin. If your inventory script assumes only one layout, it will report a GUID where a name belongs and vice versa. The companion script tests both and picks whichever field actually matches a GUID pattern.
The registry surface: classic handler registration
Every classic handler lives beneath one of these. The shell object is the part that varies.
| Shell object | What it targets | Handler types accepted |
|---|---|---|
* | All files | Shortcut menu, property sheet, verbs |
AllFileSystemObjects | All files and file folders | Shortcut menu, property sheet, verbs |
Folder | All folders, including virtual ones | Shortcut menu, property sheet, verbs |
Directory | Filesystem folders only | Shortcut menu, property sheet, verbs |
Directory\Background | The empty background inside a folder | Shortcut menu only |
DesktopBackground | The desktop wallpaper area | Shortcut menu, verbs |
Drive | Drives such as C:\ | Shortcut menu, property sheet, verbs |
Printers | All printers | Shortcut menu, property sheet |
Two more subkey names matter and are frequently confused with ContextMenuHandlers. DragDropHandlers holds handlers that appear when you right-drag an object and drop it. PropertySheetHandlers holds tabs added to the Properties dialog. Both are registered the same way, both also implement in-process COM, and both are outside the compact menu.
The registry surface: approval and policy
These two keys govern whether a registered handler is allowed to run at all.
| Subkey and value | Type | What it does |
|---|---|---|
Shell Extensions\Approved | Key of REG_SZ values named by CLSID | The administrator-approved list. Microsoft documents both the HKLM copy (all users) and the HKCU copy (per user). |
Policies\Explorer > EnforceShellExtensionSecurity | REG_DWORD | When 1, only handlers present in one of the Approved keys are allowed to run. |
Policies\Explorer > NoViewContextMenu | REG_DWORD | When 1, right-click menus do not appear at all on the desktop or in File Explorer. Not a menu-style switch - a total suppression. |
For MSIX-packaged apps there is a manifest element that writes the Approved entry for you: desktop7:ApprovedShellExtension, taking a Name and a Clsid. Microsoft is explicit that using it requires the package to set desktop7:Scope to machine, which in turn requires the custom capability Microsoft.classicAppCompatElevated_8wekyb3d8bbwe - and that capability "is granted to only a limited set of apps". In practice that route is closed to most software.
The binaries and processes involved
Only files verifiable on a live Windows 11 device are listed. Every one of these was confirmed present on the build used for this article.
| File | Role in the flow |
|---|---|
C:\Windows\explorer.exe | The shell process that owns the File Explorer window and hosts the menu. In-process legacy handlers load here. |
C:\Windows\System32\Windows.UI.FileExplorer.dll | The in-process server registered for the File Explorer Context Menu COM class. This is the code that draws the compact Windows 11 menu. |
C:\Windows\System32\shell32.dll | Core shell library. Owns the classic shortcut menu construction, canonical verbs and ShellExecute. |
C:\Windows\System32\windows.storage.dll | Shell namespace and file association plumbing. Resolves ProgIDs and association arrays that the classic menu enumerates. |
C:\Windows\System32\explorerframe.dll | The File Explorer window frame, navigation pane and view hosting. |
C:\Windows\System32\twinui.dll and twinui.pcshell.dll | Modern shell UI surfaces used across the Windows 11 shell. |
C:\Windows\System32\dllhost.exe | The COM surrogate. A packaged command declared with com:SurrogateServer is activated out of process here, which is precisely what keeps it off the Explorer fast path. |
Why "out of process" is the whole point. The modern manifest registration uses com:SurrogateServer. That means the app's DLL is hosted by the COM surrogate rather than injected into explorer.exe. If the command crashes, the surrogate dies and Explorer survives. Microsoft still warns to keep GetTitle, GetIcon and GetState fast and to "Run longer operations after Invoke is called", because those three calls are still on the menu-construction path.
How to verify: inventory before you touch anything
Do not change a registry value until you know what is currently registered. The first check is a thirty-second manual one, and it settles most tickets.
Step 1: confirm the entry is only demoted, not gone
Right-click the file. If the app's entry is not in the compact menu, press Shift+F10 - or hold Shift and right-click, or press the dedicated menu key if the keyboard has one. If the entry appears there, the app is a legacy IContextMenu handler and there is nothing wrong with the device. That is the expected, documented behaviour.
Tip that closes tickets faster than any registry change. Put Shift+F10 in the upgrade communications, not in a knowledge base article nobody reads. It is a documented equivalence - Microsoft's own developer blog states that Shift+F10 and the keyboard menu key load the Windows 10 context menu. One line in the "what changes in Windows 11" email removes most of the ticket volume that drives admins towards the unsupported hack in the first place.
Step 2: read the classic handler registration directly
This command lists every classic shortcut menu handler registered for all files, showing the handler name and the CLSID it points at. Run it in a normal console; no elevation is needed to read HKLM class keys.
Read it like this. The PSChildName column is the handler's arbitrary name - it is a label, and Windows never shows it to a user. The Clsid column is what actually matters, because that GUID is the COM class Explorer will try to create.
Step 3: resolve a CLSID to the DLL behind it
A CLSID on its own tells you nothing. Resolve it to the file on disk, then check the file is still there. This is where orphaned handlers surface - a registration left behind by an uninstall that removed the DLL but not the keys.
Step 4: check whether the unsupported override is already deployed
Before you argue about whether to deploy the hack, find out whether a previous admin already did. The override is per-user, so it hides in HKEY_CURRENT_USER and will not appear in a machine-scope audit.
Step 5: run the companion inventory script
Doing steps 2 to 4 by hand across eight shell objects and two hives is tedious and easy to get wrong. The companion script does the whole sweep, resolves every CLSID, checks every DLL on disk, reports the Approved and policy state, and gives a plain verdict on the override. It is strictly read-only - it never creates, changes or deletes a registry value, and it does not restart Explorer.
Event Viewer: honestly not applicable
There is no Event Log channel for context menu construction, and Microsoft publishes no Event IDs for it. This is not an oversight in this article - it is a design consequence. Menu building happens thousands of times a day inside the shell process on the UI path. Emitting an event per handler activation would be self-defeating. If a handler fails to load, Explorer silently omits the item.
Two adjacent channels do exist and are genuinely useful, so use them instead of hunting for IDs that do not exist.
| Channel | Documented ID to look for | When it helps |
|---|---|---|
AppXDeployment-Server > Microsoft-Windows-AppXDeploymentServer/Operational | Event 404 - Microsoft's app packaging troubleshooting guidance says to search for the most recent error event 404 for deployment errors | A vendor's MSIX or sparse package failed to register, so its modern command never appears |
Windows Logs > Application, source Application Error | No fixed ID for this scenario; read the faulting module name | A legacy in-process handler crashed explorer.exe. The faulting module names the culprit DLL |
For the packaging side there is also a cmdlet rather than a log file. Get-AppxLog returns the app package installation log produced during deployment, including errors and warnings. That is the documented way to see why a sparse package registration failed.
Gotcha: there is no log file for this feature. Explorer does not write a context menu trace to disk. If you go looking for something under C:\Windows\Logs you will not find it, and any blog that names such a path is inventing it. The nearest real artefacts are the two Event Log channels above and Get-AppxLog for the packaging path.
Services and scheduled tasks: also not applicable
No Windows service drives the context menu, and there is no scheduled task under \Microsoft\Windows\... that rebuilds or refreshes it. Menu construction is synchronous work inside explorer.exe at the moment of the right-click. The only service adjacent to this feature area is AppXSvc (display name AppX Deployment Service), which must be running for a packaged or sparse-packaged app's registration to be applied - but it plays no part in drawing a menu.
Defender and security policy: not applicable, and here is why
Nothing in this feature area is configured through Microsoft Defender Antivirus, Attack Surface Reduction rules, exploit protection, Windows Defender Application Control or the firewall. There is no Endpoint Security profile for context menus. It is worth stating plainly because context menu handlers are DLLs loaded into the shell, which sounds like something ASR ought to govern - it does not. The relevant control is the shell's own approval mechanism, EnforceShellExtensionSecurity plus the Approved list, which is an Administrative Template setting, not a Defender one.
The fix: what is supported, and what only looks like a fix
The supported answer, route 1: the vendor implements IExplorerCommand
This is the real fix and the only one Microsoft documents for getting an app into the Windows 11 compact menu. It is work for the software vendor, not for you, but knowing exactly what to ask for turns a vague support ticket into an actionable one.
Microsoft's requirement is stated directly: Windows 11 apps extend the modern File Explorer context menu by implementing IExplorerCommand and registering the command with app identity. Three parts are needed.
- A native DLL implements one or more COM classes exposing
IExplorerCommand. C++ is the usual choice because the code runs on the shell integration path. - The package manifest registers each COM class as a
windows.comServerextension, usingcom:SurrogateServerand acom:ClasswhoseIdis the command's CLSID. - The package manifest registers the command as a
windows.fileExplorerContextMenusextension, associating a shell item type with that same CLSID viadesktop5:ItemTypeanddesktop5:Verb.
The desktop5:ItemType/@Type attribute is the modern equivalent of the old shell object names: * for files, Directory for selected folders, Directory\Background for a folder background. The desktop5:Verb/@Clsid must match the com:Class/@Id and the CLSID on the COM class itself. Get one of the three out of step and the command silently never appears.
Microsoft's own closing note on the topic is the sentence to quote at a vendor: use "Show more options" only to inspect legacy context-menu extensions, because a command registered through windows.fileExplorerContextMenus and implemented with IExplorerCommand appears in the Windows 11 context menu.
The supported answer, route 2: sparse package for an unpackaged Win32 app
The obvious vendor objection is "our product is a Win32 installer, we are not shipping MSIX". That objection does not hold, and this is the most useful thing in this article to bring to a vendor conversation.
An unpackaged Win32 app can use the same IExplorerCommand and the same manifest registrations by installing a sparse package - Microsoft also calls this "packaging with external location". A sparse package does not contain the app binaries. It is a small identity-only package that references the externally installed app. The existing installer, the existing binary locations and the existing update process all stay as they are.
The manifest declares uap10:AllowExternalContent as true in Properties, sets the application's uap10:TrustLevel to mediumIL and its uap10:RuntimeBehavior to win32App, and requests the runFullTrust and unvirtualizedResources restricted capabilities. The AllowExternalContent feature was introduced in Windows 10 version 2004, build 19041, so every supported Windows 11 device has it.
The supported answer, route 3: keep the legacy handler but declare it in MSIX
If a vendor is already repackaging as MSIX and does not want to rewrite the handler, Microsoft documents a middle path. Add the desktop9 namespace and declare the existing IContextMenu implementation through windows.fileExplorerClassicContextMenuHandler, or windows.fileExplorerClassicDragDropContextMenuHandler for right-drag handlers, with a desktop9:ExtensionHandler per item type. Microsoft states this feature is available on Windows 11 version 21H2, build 22000, and later, and requires MaxVersionTested greater than 10.0.21300.0.
Gotcha: route 3 does not get you into the compact menu. It makes a legacy handler work again after packaging, which otherwise breaks. It does not promote the entry. Microsoft's own note on that page recommends implementing IExplorerCommand and using desktop4:FileExplorerContextMenus instead if you are writing a new shell extension. If a vendor tells you they "added Windows 11 context menu support" and cites desktop9, they have fixed packaging compatibility, not menu placement.
The unsupported hack: exactly what it is and exactly why it works
The command that circulates on forums creates a subkey with an empty default value.
The mechanism is not magic, and it rests on one behaviour that Microsoft does document. HKEY_CLASSES_ROOT is a merged view of HKEY_LOCAL_MACHINE\Software\Classes and HKEY_CURRENT_USER\Software\Classes, and, in Microsoft's exact words, "The user-specific settings have priority over the default settings."
So the chain is: Windows registers the modern menu class in the machine store with a real DLL path. The hack writes the same CLSID into the per-user store with an empty path. COM resolves the per-user copy first, gets an empty server path, and activation of the class fails. Explorer, unable to create the modern menu, falls back to the Windows 10 menu. Every legacy handler reappears at the top level, and the user is delighted.
Do not deploy this to a fleet. Six concrete reasons, not a vibe.
1. Microsoft documents it nowhere. The CLSID appears in no Microsoft reference documentation, no CSP, no Administrative Template and no Settings toggle. It exists in community how-tos and user forum answers only. Undocumented means uncommitted: nothing obliges the next servicing update to preserve it.
2. There is no machine-wide equivalent. The trick works because per-user class settings outrank machine ones. You cannot shadow HKLM with HKLM. That forces per-user deployment, and per-user deployment means every new user profile on every device is a fresh gap.
3. It has a documented failure mode. Microsoft states that if an application runs with administrator rights and User Account Control is disabled, "the COM runtime ignores the per-user COM configuration and accesses only the per-machine COM configuration." On any device where UAC has been turned off, the override is silently ineffective for elevated shell processes.
4. It is a sledgehammer. It does not restore one vendor's entry. It disables the entire modern menu for that user - including well-behaved IExplorerCommand commands from apps that did the work properly, and including the modern menu's own layout and cloud-provider integration.
5. It needs an Explorer restart. Which means either a disruptive shell restart in a login script or a change that appears not to work until the user signs out, generating exactly the tickets you were trying to prevent.
6. It is tied to an implementation detail that can move. The CLSID and the backing Windows.UI.FileExplorer.dll are internal shell registration details, not an API. Feature-update rollbacks, class re-registration during servicing, and shell refactoring have all historically changed details of this kind.
Observed and undocumented - read this before writing detection logic. Everything in this article about the CLSID {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}, its display name File Explorer Context Menu, its Windows.UI.FileExplorer.dll server path, and the Shell Extensions\Blocked and PackagedCom\ClassIndex keys is observed on a live device, not documented by Microsoft. Read it for diagnosis. Do not build an Intune detection script, a compliance rule or a remediation on any of it, because an undocumented value can change in any update and your detection will start lying to you rather than failing.
Group Policy reality: there is no setting for this
This is the finding, so let it be plain. There is no Group Policy setting that chooses between the Windows 11 and Windows 10 context menu. Not in any shipped Administrative Template. The two documented context-menu policies both do something else, and both are worth knowing precisely so nobody mistakes them for the switch.
The first is Remove File Explorer's default context menu, registry value NoViewContextMenu. Its documented description is that it "Removes shortcut menus from the desktop and File Explorer" and that if enabled, "menus don't appear when you right-click the desktop or when you right-click the items in File Explorer". It suppresses right-clicking entirely. To find it:
- Open the Group Policy Management Editor on the GPO you intend to change, or
gpedit.mscfor a local test. - Expand User Configuration. This is a per-user policy; it does not exist under Computer Configuration.
- Expand Administrative Templates, then Windows Components, then File Explorer.
- Double-click Remove File Explorer's default context menu.
- Select Enabled only if you genuinely want right-click menus gone. Click Apply, then OK.
- Confirm on the client with
gpupdate /target:user /force, then readHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorerand expectNoViewContextMenuto be1.
The second is Allow only per user or approved shell extensions, registry value EnforceShellExtensionSecurity. Its documented purpose is to direct Windows "to only run those shell extensions that have either been approved by an administrator or that won't impact other users of the machine". The same navigation applies:
- Navigate to User Configuration > Administrative Templates > Windows Components > File Explorer.
- Double-click Allow only per user or approved shell extensions.
- Select Enabled, click Apply, then OK.
- Both policies live in
WindowsExplorer.admxand write toSoftware\Microsoft\Windows\CurrentVersion\Policies\Explorer. - Before enabling this in production, inventory the Approved list first. A handler that is registered but not approved stops loading, and the entry disappears from the classic menu too.
Intune reality: the same two policies, no menu switch
Both settings are ADMX-backed Policy CSP entries. Microsoft documents them as user-scope only, which matters when you choose how to deliver them.
- Sign in to the Microsoft Intune admin center at intune.microsoft.com.
- Go to Devices, then Configuration, then Create, then New policy.
- Set Platform to Windows 10 and later and Profile type to Settings catalog. Click Create.
- Name the profile something an auditor will understand later, for example
W11 - File Explorer shell extension approval. - Click Add settings and search the picker for File Explorer.
- Pick Allow only per user or approved shell extensions to deliver
EnforceShellExtensionSecurity, or Remove File Explorer's default context menu to deliverNoViewContextMenu. Set the toggle deliberately. - Assign the profile to a user group. Because both policies are user-scope, assigning them to a device group is the classic mistake that makes them appear to do nothing.
- Review and create, then confirm delivery under Devices > Configuration > the profile > Device status.
If you would rather use a custom OMA-URI profile, the documented paths are exactly these two. Both are ADMX-backed, which means the value must be supplied in SyncML format rather than as a bare number.
The trap in the Intune route. Because there is no CSP for the menu style, the only way to deploy the hack through Intune is a platform script or a Win32 app that writes to HKCU. Intune platform scripts run in the SYSTEM context by default, so a naive reg add HKCU\... writes into the SYSTEM profile and changes nothing for the signed-in user. Admins then "fix" this by iterating over every profile hive or by loading the default user hive - which is how you end up with an unsupported, undocumented change applied inconsistently across a fleet, with no reporting and no rollback path. If you cannot state which users on which devices currently have it, you cannot support it.
Proof it worked: a real run on build 26200
The output below is a genuine run of the companion script on a Windows 11 Enterprise device, build 26200, under Windows PowerShell 5.1. Identifiers are replaced and one third-party product name is redacted. Nothing else is altered.
The second half of the same run answers the question the whole article is about.
Three things in that output are worth reading carefully, because each one is a decision point.
First, HKCU Approved : absent together with EnforceShellExtensionSecurity : not configured means no approval enforcement is in play. Every registered handler is allowed to load. If you turn that policy on without first populating the Approved list, entries will vanish from the classic menu too, and the tickets will look identical to the Windows 11 demotion tickets you were trying to solve.
Second, PackagedCom\ClassIndex : 124 shows the modern path is alive and well on this device. Packaged apps are registering COM classes normally. If a vendor claims Windows 11 "does not support" context menu extensions, this number is the counter-argument.
Third, the verdict line is the one to put in a report. It states which of the two menu behaviours the device is actually in, and it distinguishes "the override is absent" from "I could not read the key" - the script exits 1 rather than printing a clean-looking result when any read fails.
The pragmatic fleet position. Inventory with the script and fix the orphans, because those are a real and measurable cost. Communicate Shift+F10 in the upgrade comms. Open a vendor ticket that names IExplorerCommand, windows.fileExplorerContextMenus and sparse packaging, so it cannot be closed as "works as designed". Leave the CLSID override alone, or if a specific team genuinely cannot work without it, scope it to that team, document it as unsupported, and re-test it after every feature update. That is a compensating control. A fleet-wide login script is not.
References
Microsoft official
| Topic | Source |
|---|---|
IExplorerCommand, windows.comServer, windows.fileExplorerContextMenus, sparse packages | Add a File Explorer context menu command to a packaged desktop app |
| The Windows 11 menu design, "Show more options", Shift+F10 equivalence | Extending the Context Menu and Share Dialog in Windows 11 |
shellex\ContextMenuHandlers, handler subkey names, the Approved key | Registering Shell Extension Handlers |
| Static verbs, cascading menus, in-process handler risk | Creating Shortcut Menu Handlers |
| The merged view, and per-user class settings outranking machine ones | HKEY_CLASSES_ROOT Key |
NoViewContextMenu and EnforceShellExtensionSecurity - GPO paths, ADMX file, OMA-URIs | ADMX_WindowsExplorer Policy CSP |
Keeping a legacy IContextMenu handler working inside MSIX (desktop9) | Support legacy context menus |
desktop7:ApprovedShellExtension and its capability requirement | desktop7:ApprovedShellExtension |
| Sparse packages / packaging with external location | Grant package identity by packaging with external location |
AppX deployment event log and event 404, Get-AppxLog | Troubleshooting packaging, deployment, and query of Windows apps |
Community
One community write-up was fetched and verified as being genuinely on this topic. It is listed because it documents the unsupported override that this article argues against deploying - useful for recognising the exact command your users have already run, not as a recommendation.
| Author | Article |
|---|---|
| Anoop C Nair | Disable or Enable Windows 11 Context Menu How to Guide - documents the HKCU\Software\Classes\CLSID\...\InprocServer32 override step by step |
Companion script
The read-only inventory script used for the output above lives in the Windows 11 scripts repository, one folder per post:
Get-ShellContextMenuInventory.ps1 - enumerates every classic context menu handler, resolves each CLSID to its backing DLL, flags orphans, reports the Approved and policy state, and gives a verdict on the unsupported override. It never writes a registry value.
Download it from Imran76Awan/Windows-11-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.