Почему моя DLL регистрируется только для одного пользователя?
Я написал расширение оболочки, используя EZShellExtensions.net. Он отлично работает в моей среде разработки, когда я вошел в систему как я, а также в любой другой системе, когда я вошел в систему как я. Для всех остальных пользователей созданный мной хук копирования никогда не появится. Я использовал RegDLLView NirSoft, чтобы проверить, что DLL зарегистрирована, но не повезло.
Что я могу проверить, чтобы увидеть, почему это происходит?
FYI
Я счастлив выслать копию моего кода тому, кто захочет помочь с этим. EZShellExtensions.NET имеет период оценки 30 дней.
ОБНОВЛЕНИЕ Вывод ProcMon при использовании инструмента регистрации поставщика теперь доступен в виде файла CSV/PML, если кому-то это интересно.
РАЗРЕШИТЬ
В итоге я добавил консольный вывод в dll для отладки. Оказывается, таймер не срабатывал при работе от имени любого пользователя, кроме меня (понятия не имею, почему). С тех пор это было исправлено.
1 ответ
Это означает, что расширение оболочки было зарегистрировано в кусте HKCU\Software вместо HKLM\Software. Только последний улей делает расширения доступными для всех пользователей. Обычно это происходит потому, что UAC запрещает запись в HKLM \ Software, если только программа, выполняющая запись, не повышена.
Если эта библиотека поставляется со специальной программой регистрации, как правило, она есть, то обязательно запустите ее из командной строки с повышенными привилегиями. Пуск + Все программы, папка "Стандартные", щелкните правой кнопкой мыши ссылку "Командная строка" и выберите "Запуск от имени администратора". Перезапустите инструмент регистрации.
Если у вас все еще есть проблемы, тогда инструмент SysInternal ProcMon может показать вам, где именно написано. И не стесняйтесь использовать каналы поддержки поставщика.