Я пробовал использовать следующий код:
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
.
regsvr32
путь к файлу .dll с именем файла и расширением и нажмите Enter
Ну, вы не указываете, 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.
"
В системе x64 system32 предназначена для 64-разрядной версии, а syswow64 - для 32-разрядной версии (а не наоборот, как указано в другом ответе). WOW (Windows в Windows) - это 32-битная подсистема, которая работает под 64-битной подсистемой).
Это путаница в терминологии именования, и она только сбивает с толку, но так оно и есть.
Очередной раз ...
syswow64 - 32-битный, а НЕ 64-битный.
system32 - это 64-разрядная версия, а НЕ 32-разрядная.
В каждом из этих каталогов есть regsrv32. Один 64-битный, а другой 32-битный. То же самое и с odbcad32 и др. (Если вы хотите увидеть 32-разрядные драйверы ODBC, которые не будут отображаться с odbcad32 по умолчанию в system32, который является 64-разрядным.)
regsvr32
позаботится о деталях, теоретически он определит, регистрируете ли вы 32-битную или 64-битную DLL: stackoverflow.com/questions/18935163/…
Откройте меню «Пуск» и введите cmd в поле поиска. Удерживайте Ctrl + Shift и нажмите Enter.
Это запускает командную строку в режиме администратора.
Теперь введите: regsvr32 MyComobject.dll
Наконец, я нашел решение, просто запустите CMD от имени администратора, затем напишите
cd \windows\syswow64
тогда напишите это
regsvr32 c:\filename.dll
Я надеюсь, что этот ответ тебе поможет
Если DLL 32-битная:
если DLL 64-битная:
Здесь все шло по ложному пути. Потом я вспомнил трюк из старых времен Win95. Откройте папку программы, в которой находится .dll, откройте C: / Windows / System32, прокрутите вниз до regsvr32 и перетащите dll из папки программы на rgsrver32. Бум, готово.
Было бы очень полезно знать сообщение об ошибке. Он предназначен для предоставления информации, даже если для вас это не имеет никакого значения для нас. Принужденный догадываться, я бы сказал, что 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
Сохраните новый текстовый файл как файл batch ( -.bat
); затем просто перетащите ваш -.dll
или -.ax
файл поверх командного файла.
Если UAC не дает вам возможности запустить командный файл от имени администратора, вам может потребоваться вручную повысить привилегии (инструкции для Windows 7):
Create shortcut
;Properties
;Compatibility
вкладку;Run this program as administrator
;-.dll
или-.ax
файл поверх нового ярлыка вместо пакетного файла.Вот и все . Я выбрал COPY
вместо того , MOVE
чтобы предотвратить выход из строя какого - либо контроля учетных записей , связанных с последующей попыткой (ы). Успешная регистрация должна сопровождаться удалением исходной библиотеки ( -.dll
или -.ax
файл ).
Не беспокойтесь о копиях, сделанных в системную папку ( C:\Windows\System32
или C:\Windows\SysWOW64
) предыдущими проходами - они будут перезаписываться каждый раз, когда вы запускаете командный файл.
Если вы не запустили неправильный командный файл , в этом случае вы, вероятно, захотите удалить копию, сделанную в неправильную системную папку ( C:\Windows\System32
или C:\Windows\SysWOW64
) перед запуском правильного пакетного файла, ... или ...
Помогите 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
Run as administrator
отображается серым, когда я создал ярлык для файла bat. Я вошел в систему как администратор. Кроме того, это %nx1
или %n1
?
В Windows 7 есть разница. Вход в систему с правами администратора не дает тех же прав, что и при запуске программы с правами администратора.
Зайдите в Пуск - Все программы - Аксессуары. Щелкните правой кнопкой мыши в окне команд и выберите «Запуск от имени администратора». Теперь зарегистрируйте dll в обычном режиме через regsrvr32 xxx.dll.
И при этом, если вы получаете код ошибки 0x80040201, попробуйте решение в DllRegisterServer не удалось с кодом ошибки 0x80040201 , но убедитесь, что вы открываете командную строку как Запуск от имени администратора .
Отчасти путаница с regsvr32 заключается в том, что в 64-битных окнах имя и путь не изменились, но теперь он регистрирует 64-битные библиотеки DLL. 32-битный regsvr32 существует в SysWOW64, имя, которое, похоже, представляет 64-битные приложения. Однако WOW64 в названии относится к Windows в 64-разрядной версии Windows или, точнее, к 32-разрядной версии Windows в 64-разрядной версии Windows. Когда вы думаете об этом так, название имеет смысл, даже если оно сбивает с толку в данном контексте.
Я не могу найти свой исходный источник в блоге MSDN, но он упоминается в этой статье Википедии http://en.wikipedia.org/wiki/WoW64
Вот как я исправил эту проблему на машине Win7 x64:
«Ошибка CoCreateInstance (). Проверьте CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} записей реестра и убедитесь, что вы вошли в систему как администратор»
Надеюсь это поможет !
regsvr32
DLL необходимо экспортировать функцииDllRegisterServer
иDllUnregisterServer
. Подавляющее большинство создаваемых вами DLL вообще не регистрируется.