Почему моя DLL регистрируется только для одного пользователя? - PullRequest
3 голосов
/ 19 января 2012

Я написал расширение оболочки, используя EZShellExtensions.net. Он отлично работает в моей среде разработки, когда я вошел в систему как я, а также в любой другой системе, когда я вошел в систему как я. Для всех остальных пользователей созданный мной хук копирования никогда не появится. Я использовал RegDLLView от NirSoft, чтобы проверить, что DLL зарегистрирована, но не повезло.

Что я могу проверить, чтобы понять, почему это происходит?

FYI

Я рад отправить копию своего кода тому, кто захочет помочь с этим. EZShellExtensions.NET имеет период оценки 30 дней.

UPDATE Вывод ProcMon при использовании инструмента регистрации поставщика теперь доступен в виде файла CSV / PML, если кому-то интересно.

RESOLVE

В итоге я добавил консольный вывод в dll для отладки. Оказывается, таймер не срабатывал при работе от имени любого пользователя, кроме меня (не знаю почему). С тех пор это было исправлено.

1 Ответ

3 голосов
/ 19 января 2012

Это означает, что расширение оболочки было зарегистрировано в кусте HKCU \ Software вместо HKLM \ Software.Только последний улей делает расширения доступными для всех пользователей.Обычно это происходит потому, что UAC запрещает запись в HKLM \ Software, если только программа, выполняющая запись, не повышена.

Если эта библиотека поставляется со специальной программой регистрации, как это обычно бывает, то обязательно запустите ее из командной строки с повышенными привилегиями.Пуск + Все программы, папка «Стандартные», щелкните правой кнопкой мыши ссылку «Командная строка» и выберите «Запуск от имени администратора».Перезапустите инструмент регистрации.

Если у вас все еще есть проблемы, тогда инструмент ProcMon от SysInternal может точно показать вам, где что-то написано.И не стесняйтесь использовать каналы поддержки поставщика.

...