The difficulty with entries like Edit with Photos is not that they are protected. It is that they are registered through a mechanism most guidance predates.
A classic shell verb is a registry key under a file class, with a command line you can read. Anything that can read the registry can find it, and deleting it removes the entry. That model is what virtually all context menu advice assumes, and it is why that advice is usually correct — just not here.
Packaged applications, including Store apps and MSIX-packaged software, declare context menu commands inside their application manifest as part of the package identity. At install time those declarations are registered into a packaged-COM catalogue rather than written as ordinary class registrations. There is no conventional key holding a command line, no obvious path from the visible entry to a registry location, and nothing for a classic tool to enumerate. The entry exists, the shell resolves it correctly, and to a registry-based tool it is invisible.
Finding these entries requires reading the source of truth: enumerate the installed packages, parse each manifest for declared context menu commands, and extract the identifier, the file types it applies to, and the owning package. There is a detail here that trips up simple implementations — the manifest element for these declarations sits in a namespace that has changed across package schema generations, so matching on a fully qualified element name silently misses entries from packages built against a different version. Matching on the local element name instead catches all of them, which is the approach ContextCleaner takes.
Removal uses the same block list mechanism that applies to COM handlers: the command identifier is added to the machine-wide shell extensions block list, which the shell consults when building the menu. The package is not modified, no files are touched, and the application's own registration is intact. This is why the app keeps working normally and why the change is cleanly reversible — removing the identifier from the block list restores the entry.
Because that block list is machine-wide, disabling a packaged command requires administrator approval. There is a reason it must be the machine-wide one: the per-user equivalent accepts writes and is ignored by the shell, so a tool writing there would report success while the entry stayed in your menu. ContextCleaner writes machine-wide and batches every such change from one apply into a single prompt.