Я намагався використовувати наступний код:
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
командний рядок (виконується у підвищеному режимі!) Та натисніть «Ввести». Зауважте, що його name.dll
слід замінити на ім'я DLL, яку потрібно зареєструвати. Наприклад, якщо ви хочете зареєструвати iexplore.dll, введіть regsvr32 iexplore.dll
.
regsvr32
шлях до файлу .dll з назвою файлу та розширенням та натисніть клавішу Enter
Ну, ви не вказуєте, чи є 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 та ін. (Якщо ви хочете побачити 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 застосувати належну версію 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
щоб запобігти збою будь-яких спроб подальшого спостереження, пов'язаних з UAC. Після успішної реєстрації слід видалити вихідний ( -.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 на Windows 64, або більш чіткої 32-розрядної Windows для 64-бітної Windows. Коли ви думаєте про це таким чином, ім'я має сенс, навіть якщо воно в цьому контексті заплутане.
Я не можу знайти своє оригінальне джерело в блозі MSDN, але на нього посилається в цій статті у Вікіпедії http://en.wikipedia.org/wiki/WoW64
Ось як я вирішив цю проблему на машині Win7 x64:
"Не вдалося CoCreateInstance (). Plkease перевірити записи реєстру CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} і переконайтеся, що ви ввійшли як адміністратор"
Сподіваюся, це допомагає!
regsvr32
DLL необхідно експортувати функціїDllRegisterServer
таDllUnregisterServer
. Переважна більшість DLL-файлів, які ви створюєте, взагалі не зареєстрована.