Как зарегистрировать DLL файл в 64-разрядной версии Windows 7?

Я попытался использовать следующий код:

cd c:\windows\system32
regsvr32.exe dllname.ax

Но это не работает для меня. Как я могу зарегистрировать DLL файл в Windows 7 с 64-разрядным процессором?

Ответ 1

Введите regsvr32 name.dll в командную строку (выполняется в режиме повышенной скорости!) и нажмите "Enter". Обратите внимание, что name.dll следует заменить на имя DLL, которое вы хотите зарегистрировать. Например, если вы хотите зарегистрировать iexplore.dll, введите regsvr32 iexplore.dll.

Ответ 2

Ну, вы не укажете, является ли это 32 или 64-разрядной dll, и вы не включаете сообщение об ошибке, но я догадаюсь, что это та же проблема, что описана в этой статье в KB: Сообщение об ошибке при запуске Regsvr32.exe в 64-битной Windows

Цитата из этой статьи:

Это происходит потому, что файл Regsvr32.exe в System32 папка - это 64-разрядная версия. Когда вы запустите Regsvr32 для регистрации DLL, вы используете 64-разрядную версию по умолчанию.

Решение из этой статьи:

Чтобы устранить эту проблему, запустите Regsvr32.exe из% SystemRoot%\Syswow64 папка. Например, введите следующие команды для регистрации DLL: cd \windows\syswow64 regsvr32 c:\filename.dll

Ответ 3

Если 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.
"  

Ответ 4

В системе x64 system32 для 64 бит, а syswow64 - для 32 бит (а не наоборот, как указано в другом ответе). WOW (Windows в Windows) - это 32-разрядная подсистема, работающая под 64-разрядной подсистемой).

Это беспорядок в именах терминов и служит только для того, чтобы запутать, но так, как есть.

Снова...

syswow64 - 32 бит, а не 64 бит.

system32 - 64 бит, а не 32 бит.

В каждом из этих каталогов есть regsrv32. Один из них - 64 бит, а другой - 32 бит. Это та же самая сделка с odbcad32 и et al. (Если вы хотите увидеть 32-разрядные драйверы ODBC, которые не будут отображаться с по умолчанию odbcad32 в system32, который является 64-разрядным.)

Ответ 5

Откройте меню "Пуск" и введите cmd в поле поиска. Удерживайте Ctrl + Shift и нажмите "Enter"

Выполняется командная строка в режиме администратора.

Теперь введите: regsvr32 MyComobject.dll

Ответ 6

Если DLL 32 бит:

  • Скопируйте DLL в C:\Windows\SysWoW64\
  • В увеличенном cmd:% windir%\SysWoW64\regsvr32.exe% windir%\SysWoW64\namedll.dll

если DLL 64 бит:

  • Скопировать DLL в C:\Windows\System32\
  • В увеличенном cmd:% windir%\System32\regsvr32.exe% windir%\System32\namedll.dll

Ответ 7

Все здесь провалилось как неправильный путь. Затем я вспомнил трюк из старых дней Win95. Откройте папку программы, в которой находится .dll, откройте C:/Windows/System32, прокрутите страницу до regsvr32 и перетащите DLL из папки программы на rgsrver32. Boom, сделано.

Ответ 8

Наконец, я нашел решение просто запустить CMD в качестве администратора, а затем написать

cd \windows\syswow64

тогда напишите это

regsvr32 c:\filename.dll

Я надеюсь, что ответ поможет вам

Ответ 9

Знание сообщения об ошибке будет весьма ценным. Он предназначен для предоставления информации, хотя для вас это не имеет никакого смысла. Будучи вынужденным догадаться, я бы сказал, что DLL - это 32-разрядный DirectX-фильтр. В этом случае это должен быть правильный ход действий:

cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax

Это должно выполняться в командной строке с повышенными правами, чтобы UAC не мог остановить требуемый реестр. Задайте больше вопросов об этом на superuser.com

Ответ 10

Я просто протестировал этот чрезвычайно простой метод, и он отлично работает, но я использую встроенную учетную запись администратора, поэтому мне не нужно переходить через обручи для повышенных привилегий.

Следующий командный файл избавляет пользователя от необходимости переместить файлы в/из системных папок. Он также оставляет его в 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 файл поверх нового ярлыка вместо командного файла.

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

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

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

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

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

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

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

Ответ 11

В Windows 7 есть разница. Вход в систему как администратор не дает те же права, что и при запуске программы в качестве администратора.

Перейдите в меню "Пуск" - "Все программы" - "Акселеры". Щелкните правой кнопкой мыши в окне Command и выберите "Запуск от имени администратора". Теперь зарегистрируйте dll обычно через: regsrvr32 xxx.dll

Ответ 12

И при этом, если вы получите код ошибки 0x80040201, попробуйте решение в сбой кода DllRegisterServer с кодом ошибки 0x80040201, но убедитесь, вы открываете командную строку в качестве "Запуск от имени администратора".

Ответ 13

Вам нужно запустить cmd.exe в c:\windows\system32\ by administrator

Команды: Для отписки *.dll файлов

regsvr32.exe /u C:\folder\folder\name.dll

Для регистрации *.dll файлов

regsvr32.exe C:\folder\folder\name.dll

Ответ 14

Часть путаницы в отношении regsvr32 заключается в том, что в 64-битных окнах имя и путь не изменились, но теперь он регистрирует 64-разрядные библиотеки DLL. 32-разрядный regsvr32 существует в SysWOW64, который представляет собой 64-битные приложения. Однако WOW64 в названии относится к Windows на Windows 64, или более эксклюзионной 32-разрядной Windows в Windows 64-бит. Когда вы думаете об этом, это имеет смысл, даже если в этом контексте оно запутывается.

Я не могу найти свой исходный источник в блоге MSDN, но на это ссылается в этой статье Википедии http://en.wikipedia.org/wiki/WoW64

Ответ 15

Вот как я исправил эту проблему на машине 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 и снова в бизнесе!

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