我在开发一个COM服务器DLL,目的是覆盖Windows 10中的“以管理员身份运行”功能。我通过将DLL GUID设置为Computer\HKEY_CLASSES_ROOT\exefile\shell\runas\command注册表键上的DelegateExecute来实现。我已经创建了32位和64位版本的CLSID条目(作为InprocServer32)。 这个方法大部分情况下都有效。在资源管理器中右键点击exe文件并以管理员身份运行会委托给DLL,如果安装程序试图以提升的权限启动,则会委托给DLL,右键单击开始菜单项目也可以委托。但唯一的问题是,在使用开始菜单搜索并单击“运行命令”列出的项目时(例如搜索“wusa”),然后单击搜索结果右侧的“以管理员身份运行”(或通过右键单击结果),就不起作用了。 通过使用sysinternals的Process Monitor,我可以看到RuntimeBroker.exe正确读取注册表并检测到需要调用我的DLL,但在获取文件名后停止,并查看名为...\AppActivationErrorHandlers\80270301的注册表键,然后停止。0x80270301是称为E_SHELL_EXTENSION_BLOCKED的符号的值,因此我认为它与此有关。但我找不到任何关于它被阻止的原因的信息。 有人能指引我正确方向吗?