Почему не работает regsvr32 на Windows 7 и 8.1?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 04.10.2015 (Вс) 21:29

Что-то уже не соображаю почему такой бардак, вроде все правильно делаю. Винда 7 или 8.1 64 бита.
Мне надо разрегистрировать библиотеку dao360.dll, лежит тут C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll
Запускаю cmd через правый клик, выбрав там "Запуск от имени Администратора".
Набираю regsvr32 /u "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll"
Вылетает окно об успешном выполнении.
Но в реестре как были записи о dao360.dll так и остались, и софтина, работа которой зависит от dao360.dll как работала так и работает без проблем.
Ладно. Лезу и в ручную удаляю первую попавшуюся ветку реестра, которая содержит упоминание dao360.dll, предварительно сохранив ее в reg файл. Пробую запустить софтину, работа которой зависит от dao360.dll - не пашет.
Ладно, теперь попробую восстановить удаленную ветку реестра стандартной регистрацией:
regsvr32 "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll"
Вылетает окно об успешном выполнении. Но ветка не появилась, софтина не работает.
Запускаю сохраненный reg, и он даже без прав админа восстанавливает удаленную ветку и софтина запускается нормально.
Почему regsvr32 не работает и при этом выводит окошки, что все выполнено?
Пробовал как C:\Windows\SysWoW64\regsvr32.exe так и C:\Windows\System32\regsvr32.exe - изменений в реестре ноль.
Однако моя собственная библиотека спокойно регистрируется через regsvr32 и так же спокойно удаляется без проблем.
Подскажите в чем проблема?

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение ger_kar » 05.10.2015 (Пн) 6:06

А если попробовать эту библиотеку зарегистрировать в другом месте?
Pantalone писал(а):Однако моя собственная библиотека спокойно регистрируется через regsvr32 и так же спокойно удаляется без проблем.

А она в каком месте регается? В той же папке "C:\Program Files (x86)\... или другом месте?
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Хакер » 05.10.2015 (Пн) 11:54

Берём Process Monitor и смотрим, какие обращения к реестру совершает regsvr32.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.10.2015 (Пн) 12:32

Pantalone писал(а):Запускаю cmd через правый клик, выбрав там "Запуск от имени Администратора".

Запускай 32-битную командную строку.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 05.10.2015 (Пн) 13:49

ger_kar писал(а):А если попробовать эту библиотеку зарегистрировать в другом месте?
А она в каком месте регается? В той же папке "C:\Program Files (x86)\... или другом месте?

Попробовал вместо своей библиотеки зарегистрировать MSCOMCTL.OCX поместив ее в ту же папку C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\. Нормально оттуда отрабатывает и регистрация и дерегистрация.

Qwertiy писал(а):
Pantalone писал(а):Запускаю cmd через правый клик, выбрав там "Запуск от имени Администратора".

Запускай 32-битную командную строку.

Не помогает.

Попробую Process Monitor.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 05.10.2015 (Пн) 14:23

Хакер писал(а):Берём Process Monitor и смотрим, какие обращения к реестру совершает regsvr32.

Подскажите, по каким словам искать проблему?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Хакер » 05.10.2015 (Пн) 15:16

Ну по каким, по каким...

Как работает regsvr32? Очень просто он работает: загружает указанную библиотеку с помощью LoadLibrary, получает адрес экспортируемой из неё функции DllRegisterServer с помощью GetProcAddess и вызывает эту функцию. Внутри DllRegisterServer код библиотеки пишет в реестр нужные ключи и значения с помощью функций по работе с реестром.

Очевидно, в твоём случае код библиотеки кривой и не проверяет результат работы этих функций. Поэтому библиотеке и рапортует вызывающей стороне (утилите regsvr32) об успехе, а он рапортует тебе.

Утитлита ProcMon покажет каждое обращение к реестру (Reg-функциями). Для каждого обращения будет показан статус выполнения операции. Скорее всего там будет какой-то сбой. Надо разобраться, что за сбой, какой код ошибки, и дойти в итоге до первопричины.

Если там окажется, что все операции доступа к реестру завершились со статусом «успешно», значит виноваты внутренние механизмы винды (типа UAC, SxS и т.п.), и нужно будет уже копать в их сторону.

По крайней мере не стоит гадать дальше, нужно первым делом взять и посмотреть весь лог операций доступа к реестру.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 05.10.2015 (Пн) 16:53

Хакер
Благодарю за содержательный ответ.
Похоже с 7 и 8.1 виндой поставляется кривой файл, или в нем намеренно убрали возможность взаимодействия с regsvr32, он даже из другой папки не хочет с регистрацией работать, хотя говорит все ок. Скопировал его в папку на диск fat32 , т.е. прав никаких не осталось, и не пашет. И что же делать юзеру, у которого полетела регистрация? Ставить вместо этого файл устаревшей версии, у которого работает регистрация? Удивительно.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Хакер » 05.10.2015 (Пн) 17:26

Где результат изучения ProcMon'ом?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 05.10.2015 (Пн) 19:13

Хакер писал(а):Где результат изучения ProcMon'ом?

Не получилось ничего понять в этой тьме строк. Делал регистрацию обеих файлов, тот который нормальный и тот который не регистрируется и идет в комплекте с 7 виндой, сохранил Монитором отдельные логи по доступу к файлам и по доступу к реестру и сравнил построчно через софтину для сравнения, ничего не понять в этой мешанине.
Нашел другое, у меня есть софтина, которая создает манифест для библиотек (технология от microsoft), чтобы их можно было без регистрации использовать прямо из папки программы, так вот для нормальной библиотеки в манифесте появляется куча строк похожих на строки реестра, а для кривой библиотеки в манифесте почти ничего не появляется. Видимо все же кривая библиотека идет в 7 винде и выше или специально так сделано.
Попробовал в XP зарегистрировать - не регистрируется. Ну точно, кривая библиотека.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение ger_kar » 05.10.2015 (Пн) 22:13

Pantalone писал(а):Не получилось ничего понять в этой тьме строк.
Там же фильтры есть. Можешь еще RegSnap заюзать. Эта утилита позволяет делать снимки файловой системы и реестра и делать сравнение.
Кстати, а почему бы тебе это файл не выложить. Я бы потестил.
Бороться и искать, найти и перепрятать

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 05.10.2015 (Пн) 22:37

ger_kar писал(а):Там же фильтры есть. Можешь еще RegSnap заюзать. Эта утилита позволяет делать снимки файловой системы и реестра и делать сравнение.
Кстати, а почему бы тебе это файл не выложить. Я бы потестил.

Нет особого смысла тестировать, как мне кажется, либо микрософт кладет кривую библиотеку в состав винды, либо отключили регистрацию в коде библиотеки. Задал вопрос на конфе Микрософта, может чего прояснится.
Прилагаю архив, если кому интересно.
Содержимое:
old-dao360.dll - старая версия, регистрация работает и на 7 винде и на XP.
w7-dao360.dll - файл у меня на 7 винде лежит, не регистрируется нигде.
w8.1-dao360.dll - из дистрибутива 8.1 винды, тоже кривой.
Предварительно переименовать в dao360.dll и регистрировать в папке
C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\ для 64 битной винды.
C:\Program Files\Common Files\Microsoft Shared\DAO\ для 32 битной.
Вложения
DAO.zip
(675.19 Кб) Скачиваний: 177

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Хакер » 06.10.2015 (Вт) 15:35

Pantalone писал(а):Не получилось ничего понять в этой тьме строк

Ты поставь фильтр на reg-операции. Скажи, если не знаешь как — мы объясним.

Там будет не тьма, а штук 50—80 строк. Это уже хорошо. Даже просто скинь нам эти строки, и мы разберёмся

Архив бы твой я поизучал, только нет у меня Win7 и Win8 под рукой.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re: Почему не работает regsvr32 на Windows 7 и 8.1?

Сообщение Pantalone » 06.10.2015 (Вт) 17:17

Делал мониторинг по процессу regsvr32.exe, 400 с лишним строк получилось, если только обращения к реестру смотреть.
Нет там ничего подозрительного вроде.
Если кто заинтересуется, прилагаю в архиве логи ProcessMonitor-ра из под XP, которые можно через ProcessMonitor смотреть:
badfile.PML - попытка регистрации кривой библиотеки, которая не регистрируется ни в XP ни в 7.
goodfile.PML - регистрация нормальной библиотеки, работает на всех системах.
папка vb6-dao-test - проект vb6 для тестирования работы DAO, если вдруг кто захочет с регистрацией повозиться.
Ну и сам Procmon.exe до кучи, чтобы не качать.
Сами библиотеки нормальная и кривые в предыдущем посте приложены.
Вложения
ProcessMonitor.zip
(1.03 МиБ) Скачиваний: 184


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron