Как мне зарегистрировать файл DLL в Windows 7 64-bit?
Я попытался использовать следующий код:
cd c:\windows\system32
regsvr32.exe dllname.ax
Но это не работает для меня. Как я могу зарегистрировать файл DLL в Windows 7 с 64-разрядным процессором?
15 ответов
Тип regsvr32 name.dll
в командной строке (выполняется в режиме повышенных прав!) и нажмите "Ввод". Обратите внимание, что name.dll
должно быть заменено именем библиотеки DLL, которую вы хотите зарегистрировать. Например, если вы хотите зарегистрировать iexplore.dll, введите regsvr32 iexplore.dll
,
Ну, вы не указываете, является ли это 32- или 64-битной DLL, и не включаете сообщение об ошибке, но я предполагаю, что это та же проблема, что и описанная в этой статье базы знаний: Сообщение об ошибке при запуске Regsvr32.exe на 64-битной Windows
Цитата из этой статьи:
Это происходит потому, что файл Regsvr32.exe в папке System32 является 64-разрядной версией. Когда вы запускаете Regsvr32 для регистрации DLL, вы по умолчанию используете 64-битную версию.
Решение из этой статьи:
Чтобы решить эту проблему, запустите Regsvr32.exe из папки%SystemRoot%\Syswow64. Например, введите следующие команды для регистрации DLL:
cd \windows\syswow64
regsvr32 c:\filename.dll
Если библиотека DLL 32- разрядная:
Скопируйте DLL в C:\Windows\SysWoW64\
В командной строке с повышенными правами: %windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
если DLL является 64- битной:
Скопируйте DLL в C:\Windows\System32\
В командной строке с повышенными правами: %windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Я знаю, что это кажется неправильным, но так оно и есть. Увидеть:
http://support.microsoft.com/kb/249873
Цитата: "Примечание. В 64-разрядной версии операционной системы Windows существует две версии файла Regsv32.exe:
64-разрядная версия -%systemroot%\System32 \regsvr32.exe.
32-разрядная версия -%systemroot%\SysWoW64 \regsvr32.exe.
"
В 64-разрядной системе system32 предназначен для 64-разрядных систем, а syswow64 - для 32-разрядных (не так, как указано в другом ответе). WOW (Windows on Windows) - это 32-битная подсистема, которая работает под 64-битной подсистемой).
Это беспорядок в терминах именования, и служит только для того, чтобы запутать, но это так.
Снова...
syswow64 является 32-битным, а не 64-битным.
system32 является 64-битным, а не 32-битным.
В каждом из этих каталогов есть regsrv32. Один 64-битный, а другой 32-битный. То же самое относится к odbcad32 и соавт. (Если вы хотите видеть 32-битные драйверы ODBC, которые не отображаются с odbcad32 по умолчанию в system32, который является 64-битным.)
Если библиотека DLL 32-разрядная:
- Скопируйте DLL в C: \ Windows \ SysWoW64 \
- В повышенных cmd: %windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
если DLL является 64-битной:
- Скопируйте DLL в C: \ Windows \ System32 \
- In elevated cmd: %windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Откройте меню "Пуск" и введите cmd в поле поиска. Удерживая Ctrl + Shift, нажмите Enter.
Это запускает командную строку в режиме администратора.
Теперь введите: regsvr32 MyComobject.dll
Наконец, я нашел решение, просто запустите CMD как администратор, а затем напишите
cd \windows\syswow64
тогда напиши это
regsvr32 c:\filename.dll
Я надеюсь, что ответ поможет вам
Все здесь терпело неудачу как неправильный путь. Тогда я вспомнил трюк со старых дней Win95. Откройте папку программы, в которой находится.dll, откройте C:/Windows/System32, прокрутите вниз до regsvr32 и перетащите dll из папки программы на rgsrver32. Boom, сделано.
И при этом, если вы получаете код ошибки 0x80040201, попробуйте выполнить решение в DllRegisterServer, в котором произошел сбой с кодом ошибки 0x80040201, но убедитесь, что вы открыли командную строку как Запуск от имени администратора.
В Windows 7 есть разница. Вход в систему с правами администратора не дает тех же прав, что и при запуске программы с правами администратора.
Зайдите в Пуск - Все программы - Аксессуары. Щелкните правой кнопкой мыши в окне команд и выберите "Запуск от имени администратора". Теперь зарегистрируйте dll как обычно: regsrvr32 xxx.dll
Вам нужно запустить cmd.exe
в c:\windows\system32\ by administrator
Команды: для отмены регистрации *.dll файлов
regsvr32.exe /u C:\folder\folder\name.dll
Для регистрации *.dll файлов
regsvr32.exe C:\folder\folder\name.dll
Знание сообщения об ошибке было бы весьма ценно. Он предназначен для предоставления информации, хотя он не имеет никакого смысла для вас, он делает для нас. Будучи вынужден догадаться, я бы сказал, что DLL является 32-битным фильтром DirectX. В этом случае это должен быть правильный курс действий:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
Это должно быть выполнено в командной строке с повышенными правами, чтобы UAC не мог остановить доступ к реестру, который требуется. Задайте больше вопросов об этом на superuser.com
Я только что протестировал этот чрезвычайно простой метод, и он отлично работает - но я использую встроенную учетную запись администратора, поэтому мне не нужно перепрыгивать через обручи для повышения привилегий.
Следующий пакетный файл избавляет пользователя от необходимости перемещать файлы в / из системных папок. Это также оставляет Windows до применения правильной версии Regsvr32
,
ИНСТРУКЦИИ:
В папке, содержащей библиотеку (
-.dll
или же-.ax
) файл, который вы хотите зарегистрировать, откройте новый текстовый файл и вставьте в одну из процедур ниже:echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS copy %1 C:\Windows\System32 regsvr32 "%nx1" echo END BATCH FILE pause
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS copy %1 C:\Windows\SysWOW64 regsvr32 "%nx1" echo END BATCH FILE pause
Сохраните новый текстовый файл как пакет (
-.bat
) файл; затем просто перетащите-.dll
или же-.ax
файл поверх командного файла.Если UAC не дает вам возможности запускать командный файл от имени администратора, вам может потребоваться вручную повысить привилегии (инструкции для Windows 7):
- Щелкните правой кнопкой мыши на командном файле;
- Выбрать
Create shortcut
; - Щелкните правой кнопкой мыши по ярлыку;
- Выбрать
Properties
; - Нажмите на
Compatibility
вкладка; - Установите флажок с надписью
Run this program as administrator
; - Перетащить
-.dll
или же-.ax
файл поверх нового ярлыка вместо командного файла.
Вот и все Я выбрал COPY
вместо MOVE
предотвратить неудачу любой связанной с UAC последующей попытки. После успешной регистрации следует удалить исходную библиотеку ( -.dll
или же -.ax
) файл.
Не беспокойтесь о копиях, сделанных в системную папку ( C:\Windows\System32
или же C:\Windows\SysWOW64
) предыдущими проходами - они будут перезаписываться при каждом запуске командного файла.
Если вы не запустили неправильный пакетный файл, в этом случае вы, вероятно, захотите удалить сделанную копию в неправильную системную папку ( C:\Windows\System32
или же C:\Windows\SysWOW64
) перед запуском правильного командного файла, ... или...
Помогите Windows выбрать правильный файл библиотеки для регистрации, указав полное местоположение в каталоге.
- Из правого командного файла скопируйте путь к системной папке
- Если 64-битный:
C:\Windows\System32
- Если 32-битный:
C:\Windows\SysWOW64
- Если 64-битный:
- Вставьте его в следующую строку, чтобы он предшествовал
%nx1
- Если 64-битный:
regsvr32 "C:\Windows\System32\%nx1"
- Если 32-битный:
regsvr32 "C:\Windows\SysWOW64\%nx1"
- Вставить путь внутри кавычек
- Вставьте обратную косую черту, чтобы отделить
%nx1
из пути к системной папке
- или...
- Если 64-битный:
- Из правого командного файла скопируйте путь к системной папке
Запустите этот пакетный файл ружья, который будет (по порядку):
- Выполнить очистку прерванных процессов регистрации
- Отменить любой процесс регистрации, завершенный вашим файлом библиотеки;
- Удалите все копии вашего библиотечного файла, которые были сохранены в любой системной папке;
- Сделайте паузу, чтобы разрешить вам завершить пакетный файл в этот момент (и запустить другой, если хотите).
- Попытка 64-битной установки в вашем библиотечном файле
- Скопируйте файл библиотеки в
C:\Windows\System32
; - Зарегистрируйте ваш библиотечный файл как 64-битный процесс;
- Пауза, чтобы позволить вам завершить пакетный файл на этом этапе.
- Скопируйте файл библиотеки в
- Отменить 64-битную установку
- Отменить любую регистрацию вашего библиотечного файла как 64-битный процесс;
- Удалить файл библиотеки из
C:\Windows\System32
; - Сделайте паузу, чтобы разрешить вам завершить пакетный файл в этот момент (и запустить другой, если хотите).
- Попытка 32-битной установки в вашем библиотечном файле
- Скопируйте файл библиотеки в
C:\Windows\SystemWOW64
- Зарегистрируйте ваш библиотечный файл как 32-битный процесс;
- Пауза, чтобы позволить вам завершить пакетный файл на этом этапе.
- Скопируйте файл библиотеки в
- Удалить оригинальную незарегистрированную копию файла библиотеки
- Выполнить очистку прерванных процессов регистрации
Отчасти путаница в отношении regsvr32 заключается в том, что в 64-битных окнах имя и путь не изменились, но теперь в нем регистрируются 64-битные библиотеки DLL. 32-битный regsvr32 существует в SysWOW64, имя, которое, по-видимому, представляет 64-битные приложения. Однако WOW64 в названии относится к Windows в Windows 64 или более расширенной версии 32-битной Windows в 64-битной Windows. Когда вы думаете об этом таким образом, название имеет смысл, даже если оно сбивает с толку в этом контексте.
Я не могу найти свой оригинальный источник в блоге MSDN, но на него есть ссылка в этой статье Википедии http://en.wikipedia.org/wiki/WoW64
Вот как я исправил эту проблему на компьютере с Win7 x64:
1 - сообщение об ошибке:
"Не удалось CoCreateInstance() Plkease проверить записи реестра CLSID{F088EA74-2E87-11D3-B1F3-00C0F03C37D3} и убедиться, что вы вошли в систему как администратор"
2 - исправить процедуру:
- Запустите / введите cmd/RightMouseClick на cmd.exe и выберите "Запуск от имени администратора"
- набрал: regsvr32 /s C:\Program Files\Autodesk\3ds Max Design 2015\atl.dll regsvr32 /s C:\Program Files\Autodesk\3ds Max Design 2015\MAXComponents.dll
- перезапустите Win 7 и вернитесь в дело снова!
Надеюсь это поможет!