Regsvr32 падает в Windows 7 - PullRequest
       48

Regsvr32 падает в Windows 7

1 голос
/ 08 сентября 2010

У меня есть x64 (64-битная) COM dll. При попытке зарегистрировать его в Regsvr32 в Windows 7 - происходит сбой Regsvr32.

Regsvr32 запускается под cmd с правами администратора («запуск от имени администратора»), я пробовал 32- и 64-битный cmd.exe и regsvr.exe, даже два разных компьютера, и он всегда одинаков.

Отладка сбойного Regsvr32 сообщает, что произошло переполнение буфера, в чем может быть проблема?

Все тоже самое, но скомпилированный как Win32 (32-битный) работает нормально и не имеет проблем при регистрации

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Скорее всего, реализация DllRegisterServer() в этой DLL дает сбой при компиляции для 64 бит.

Если у вас есть исходный код для DLL, лучше всего отладить код реализации по мере его выполнения и устранить основную причину проблемы. Это может быть любая ошибка, обычно возникающая, когда код не написан независимо от разрядности (32-разрядный / 64-разрядный переносимый).

1 голос
/ 08 сентября 2010

Очевидно, проблема в том, что у вас переполнение буфера.Теперь схемы памяти процессов Win32 и Win64 будут отличаться, особенно с ASLR.Поэтому нельзя с уверенностью сказать, что переполнение буфера будет иметь те же последствия для Win32.Это особенно верно для чего-то вроде Regsvr32, который вызовет одну функцию в вашей DLL и завершит работу.Это ограничивает время, в течение которого переполнение буфера может повредить данные.

Конечно, решение состоит в том, чтобы просто устранить переполнение буфера.

...