Я попытался использовать следующий код:
cd c:\windows\system32
regsvr32.exe dllname.ax
Но это не работает для меня. Как я могу зарегистрировать DLL файл в Windows 7 с 64-разрядным процессором?
Я попытался использовать следующий код:
cd c:\windows\system32
regsvr32.exe dllname.ax
Но это не работает для меня. Как я могу зарегистрировать DLL файл в Windows 7 с 64-разрядным процессором?
Введите regsvr32 name.dll
в командную строку (выполняется в режиме повышенной скорости!) и нажмите "Enter". Обратите внимание, что name.dll
следует заменить на имя DLL, которое вы хотите зарегистрировать. Например, если вы хотите зарегистрировать iexplore.dll, введите regsvr32 iexplore.dll
.
Ну, вы не укажете, является ли это 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
Если 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.
"
В системе 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-разрядным.)
Откройте меню "Пуск" и введите cmd в поле поиска. Удерживайте Ctrl + Shift и нажмите "Enter"
Выполняется командная строка в режиме администратора.
Теперь введите: regsvr32 MyComobject.dll
Если DLL 32 бит:
если DLL 64 бит:
Все здесь провалилось как неправильный путь. Затем я вспомнил трюк из старых дней Win95. Откройте папку программы, в которой находится .dll, откройте C:/Windows/System32, прокрутите страницу до regsvr32 и перетащите DLL из папки программы на rgsrver32. Boom, сделано.
Наконец, я нашел решение просто запустить CMD в качестве администратора, а затем написать
cd \windows\syswow64
тогда напишите это
regsvr32 c:\filename.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
файл поверх нового ярлыка вместо командного файла. Что он. Вместо MOVE
я выбрал COPY
, чтобы предотвратить отказ от последующих попыток (ов), связанных с UAC. За успешной регистрацией следует удалить исходный файл библиотеки (-.dll
или -.ax
).
Не волнуйтесь о копиях, сделанных в системную папку (C:\Windows\System32
или C:\Windows\SysWOW64
) предыдущими проходами - они будут перезаписаны каждый раз, когда вы запускаете командный файл.
Если вы не запустили неправильный командный файл, в этом случае вы, вероятно, захотите удалить копию, сделанную в неправильную системную папку (C:\Windows\System32
или C:\Windows\SysWOW64
), перед запуском соответствующего пакетного файла,... или...
Help Windows выбирает нужный файл библиотеки для регистрации, полностью определяя местоположение своего каталога.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
от пути к системной папкеЗапустите этот пакетный файл дробовика, который будет (по порядку):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
В Windows 7 есть разница. Вход в систему как администратор не дает те же права, что и при запуске программы в качестве администратора.
Перейдите в меню "Пуск" - "Все программы" - "Акселеры". Щелкните правой кнопкой мыши в окне Command и выберите "Запуск от имени администратора". Теперь зарегистрируйте dll обычно через: regsrvr32 xxx.dll
И при этом, если вы получите код ошибки 0x80040201, попробуйте решение в сбой кода DllRegisterServer с кодом ошибки 0x80040201, но убедитесь, вы открываете командную строку в качестве "Запуск от имени администратора".
Вам нужно запустить cmd.exe
в c:\windows\system32\ by administrator
Команды: Для отписки *.dll файлов
regsvr32.exe /u C:\folder\folder\name.dll
Для регистрации *.dll файлов
regsvr32.exe C:\folder\folder\name.dll
Часть путаницы в отношении regsvr32 заключается в том, что в 64-битных окнах имя и путь не изменились, но теперь он регистрирует 64-разрядные библиотеки DLL. 32-разрядный regsvr32 существует в SysWOW64, который представляет собой 64-битные приложения. Однако WOW64 в названии относится к Windows на Windows 64, или более эксклюзионной 32-разрядной Windows в Windows 64-бит. Когда вы думаете об этом, это имеет смысл, даже если в этом контексте оно запутывается.
Я не могу найти свой исходный источник в блоге MSDN, но на это ссылается в этой статье Википедии http://en.wikipedia.org/wiki/WoW64
Вот как я исправил эту проблему на машине Win7 x64:
"Ошибка CoCreateInstance() Plkease проверить записи в реестре CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} и убедитесь, что вы вошли в систему как администратор "
Надеюсь, это поможет!