Расширение COM-оболочки для переопределения «Запуск от имени администратора» не выполняется при поиске в меню «Пуск» - PullRequest
0 голосов
/ 16 января 2019

Я работаю над библиотекой 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, поэтому я предполагаю, что оно связано. Но я не могу найти информацию о том, почему он блокируется.

Может ли кто-нибудь помочь мне указать верное направление?

1 Ответ

0 голосов
/ 17 января 2019

Я решил проблему, переключившись с InprocServer (DLL) на LocalServer (EXE).Предположительно, потому что требования к безопасности ниже для исполняемого файла ниже, чем DLL.

...