Как мне зарегистрировать файл 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\syswow64regsvr32 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-разрядная:

  1. Скопируйте DLL в C: \ Windows \ SysWoW64 \
  2. В повышенных cmd: %windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

если DLL является 64-битной:

  1. Скопируйте DLL в C: \ Windows \ System32 \
  2. 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):

    1. Щелкните правой кнопкой мыши на командном файле;
    2. Выбрать Create shortcut;
    3. Щелкните правой кнопкой мыши по ярлыку;
    4. Выбрать Properties;
    5. Нажмите на Compatibility вкладка;
    6. Установите флажок с надписью Run this program as administrator;
    7. Перетащить -.dll или же -.ax файл поверх нового ярлыка вместо командного файла.

Вот и все Я выбрал COPY вместо MOVE предотвратить неудачу любой связанной с UAC последующей попытки. После успешной регистрации следует удалить исходную библиотеку ( -.dll или же -.ax ) файл.

Не беспокойтесь о копиях, сделанных в системную папку ( C:\Windows\System32 или же C:\Windows\SysWOW64 ) предыдущими проходами - они будут перезаписываться при каждом запуске командного файла.

Если вы не запустили неправильный пакетный файл, в этом случае вы, вероятно, захотите удалить сделанную копию в неправильную системную папку ( C:\Windows\System32 или же C:\Windows\SysWOW64) перед запуском правильного командного файла, ... или...

  • Помогите Windows выбрать правильный файл библиотеки для регистрации, указав полное местоположение в каталоге.

    1. Из правого командного файла скопируйте путь к системной папке
      • Если 64-битный: C:\Windows\System32
      • Если 32-битный: C:\Windows\SysWOW64
    2. Вставьте его в следующую строку, чтобы он предшествовал %nx1
      • Если 64-битный: regsvr32 "C:\Windows\System32\%nx1"
      • Если 32-битный: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • Вставить путь внутри кавычек
        • Вставьте обратную косую черту, чтобы отделить %nx1 из пути к системной папке
      • или...

  • Запустите этот пакетный файл ружья, который будет (по порядку):

    1. Выполнить очистку прерванных процессов регистрации
      • Отменить любой процесс регистрации, завершенный вашим файлом библиотеки;
      • Удалите все копии вашего библиотечного файла, которые были сохранены в любой системной папке;
      • Сделайте паузу, чтобы разрешить вам завершить пакетный файл в этот момент (и запустить другой, если хотите).
    2. Попытка 64-битной установки в вашем библиотечном файле
      • Скопируйте файл библиотеки в C:\Windows\System32;
      • Зарегистрируйте ваш библиотечный файл как 64-битный процесс;
      • Пауза, чтобы позволить вам завершить пакетный файл на этом этапе.
    3. Отменить 64-битную установку
      • Отменить любую регистрацию вашего библиотечного файла как 64-битный процесс;
      • Удалить файл библиотеки из C:\Windows\System32;
      • Сделайте паузу, чтобы разрешить вам завершить пакетный файл в этот момент (и запустить другой, если хотите).
    4. Попытка 32-битной установки в вашем библиотечном файле
      • Скопируйте файл библиотеки в C:\Windows\SystemWOW64
      • Зарегистрируйте ваш библиотечный файл как 32-битный процесс;
      • Пауза, чтобы позволить вам завершить пакетный файл на этом этапе.
    5. Удалить оригинальную незарегистрированную копию файла библиотеки

Отчасти путаница в отношении 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 и вернитесь в дело снова!

Надеюсь это поможет!

Другие вопросы по тегам