Моему приложению нужно зарегистрировать две COM-библиотеки. Это делается автоматически, если у пользователя есть необходимые права доступа, но в противном случае это можно сделать с помощью regsvr32
.
Теперь на нескольких рабочих станциях происходит следующее:
- Запуск
cmd.exe
с правами администратора
- Зарегистрировать первую DLL: Успешно
- Зарегистрировать вторую DLL: ошибка (0x80004005, доступ запрещен)
Когда мне впервые сообщили об этой ошибке, я автоматически ответил: «Конечно, это не работает, вам нужны права администратора». Само собой разумеется, я чувствовал себя довольно смущенным, поскольку я попытался зарегистрировать DLL самостоятельно ...
Что может быть причиной этого: одну DLL можно зарегистрировать, а другую - нет.
Некоторая справочная информация:
- Обе библиотеки DLL созданы в Delphi 2005.
- Обе библиотеки DLL имеют очень простые интерфейсы и очень мало классов.
- Отказавшие машины всегда были Vista или Windows 7.
Обычно я запускаю Process Monitor, но сейчас у меня нет доступа к одной из рабочих станций, поэтому мне нужно собрать как можно больше информации, пока я не смогу достать одну из них.
ОБНОВЛЕНИЕ : я получил удаленный доступ к одной из неисправных рабочих станций. Загадочные вещи произошли:
- Запуск Process Monitor был невозможен (!) Через несколько секунд Windows показала ошибку «недостаточно памяти».
- Переключение на другого пользователя позволило зарегистрировать DLL. (!)
Другими словами:
- Войдите в систему как
UserA
, запустите cmd.exe
как Администратор, regsvr32.exe
: Ошибка
- Войдите в систему как
UserB
, запустите cmd.exe
как Администратор, regsvr32.exe
: Успешно
Что может вводить такое поведение?!