Расширение COM-оболочки для переопределения "Запуск от имени администратора" не выполняется при поиске в меню "Пуск"

Я работаю над библиотекой DLL COM-сервера, чтобы переопределить "Запуск от имени администратора" в Windows 10. Я делаю это, устанавливая GUID DLL как DelegateExecute на ключ реестра реестра Computer\HKEY_CLASSES_ROOT\exefile\shell\runas\command. У меня есть записи CLSID для 32- и 64-разрядных версий (как InprocServer32).

Это работает нормально по большей части. Правый щелчок по исполняемым файлам в проводнике и запуск от имени администратора делегируется в DLL, если установщик пытается запустить с повышенными привилегиями, он делегируется в DLL, делегируется щелчок правой кнопкой мыши по пунктам меню "Пуск" и т. Д.

Единственная проблема заключается в том, что при использовании поиска в меню "Пуск" и попадании в пункт, который указан как "Выполнить команду" (например, поиск "wusa"), затем нажмите "Запуск от имени администратора" в правой части поиска (или по праву. нажатие на результат) ничего не делает.

Используя Process Monitor от sysinternals, я вижу, что RuntimeBroker.exe правильно читает реестр и определяет, что моя DLL - это та, которую нужно вызвать, но затем она останавливается сразу после получения имени файла и вместо этого смотрит на ключ реестра, называемый...\AppActivationErrorHandlers\80270301 и затем останавливается. 0x80270301 - это значение символа с именем E_SHELL_EXTENSION_BLOCKED, поэтому я предполагаю, что оно связано. Но я не могу найти информацию о том, почему он заблокирован.

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

1 ответ

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

Другие вопросы по тегам