Я работаю над библиотекой DLL COM-сервера, чтобы переопределить «Запуск от имени администратора» в Windows 10. Я делаю это, устанавливая GUID DLL как DelegateExecute на компьютере \ HKEY_CLASSES_ROOT \ exefile \ shell \ runas \ command Registry ключ. У меня есть записи CLSID для 32- и 64-разрядных версий (как InprocServer32).
По большей части это нормально работает. Правый щелчок по исполняемым файлам в проводнике и запуск от имени администратора делегируется в DLL, если установщик пытается запустить с повышенными привилегиями, он делегируется в DLL, делегируется щелчок правой кнопкой мыши по пунктам меню Пуск и т. Д.
Единственная проблема заключается в том, что при использовании поиска в меню «Пуск» и нажатии на элемент, который указан как «Выполнить команду» (например, поиск «wusa»), затем нажмите «Запуск от имени администратора» в правой части поиска ( или щелкнув правой кнопкой мыши результат) ничего не делает.
Используя Process Monitor от sysinternals, я вижу, что RuntimeBroker.exe правильно читает реестр и обнаруживает, что моя DLL - это та, которую нужно вызвать, но затем она останавливается сразу после получения имени файла и вместо этого смотрит на вызываемый ключ реестра. .. \ AppActivationErrorHandlers \ 80270301 и затем останавливается. 0x80270301 - это значение символа с именем E_SHELL_EXTENSION_BLOCKED, поэтому я предполагаю, что оно связано. Но я не могу найти информацию о том, почему он блокируется.
Может ли кто-нибудь помочь мне указать верное направление?