COM 外壳扩展以覆盖"Run as Administrator"在"开始"菜单搜索中失败



我正在使用COM服务器DLL来覆盖Windows 10中的"以管理员身份运行"。我通过在Computer\HKEY_CLASSES_ROOT\exefile\shell\runas\command注册表项上将DLL GUID设置为DelegateExecute来完成此操作。我创建了32位和64位版本的CLSID条目(作为InprocServer32)。

这在很大程度上运行良好。右键单击资源管理器中的exe文件并以管理员身份运行会被委派给DLL,如果安装程序试图以提升的权限启动,则会被委派到DLL,右键单击开始菜单项会被委派,依此类推。

唯一的问题是,当使用"开始"菜单搜索并点击一个列为"运行命令"的项目(例如搜索"wusa")时,单击搜索右侧的"以管理员身份运行"(或右键单击结果)没有任何作用。

使用sysinternals中的Process Monitor,我可以看到RuntimeBroker.exe正确地读取注册表,并检测到我的DLL是需要调用的DLL,但它在获得文件名后立即停止,而是查看名为…的注册表项。。。\AppActivationErrorHandlers\80270301,然后停止。0x80270301是一个名为E_SHELL_EXTENSION_BLOCKED的符号的值,所以我假设它是相关的。但我找不到关于它被屏蔽的原因的信息。

有人能帮我指明正确的方向吗?

我通过从InprocServer(DLL)切换到LocalServer(EXE)解决了这个问题。可能是因为程序外的exe比DLL的安全要求更低。

最新更新