Как мне зарегистрировать файл DLL в Windows 7 64-bit? - PullRequest
99 голосов
/ 04 февраля 2011

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

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

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

Ответы [ 15 ]

3 голосов
/ 11 июня 2013

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

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

3 голосов
/ 09 июня 2013

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

Следующий пакетный файл избавляет пользователя от необходимости перемещать файлы в / из системных папок.Кроме того, 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-битной процедурыss;
      • Удалите файл библиотеки из C:\Windows\System32;
      • Сделайте паузу, чтобы разрешить вам завершить пакетный файл в этот момент (и запустить другой, если хотите).
    4. Попытка 32-разрядной установки в файл библиотеки
      • Скопируйте файл библиотеки в C:\Windows\SystemWOW64
      • Зарегистрируйте файл библиотеки как 32-разрядный процесс;
      • Пауза, позволяющая завершить пакетный файл на этом этапе.
    5. Удалить оригинальную незарегистрированную копию файла библиотеки
3 голосов
/ 04 февраля 2011

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

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

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

2 голосов
/ 11 ноября 2014

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

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

1 голос
/ 19 апреля 2016

Вот как я исправил эту проблему на компьютере с Win7 x64:

1 - сообщение об ошибке:

"Ошибка CoCreateInstance () Пожалуйста, проверьте ваши записи реестра 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 и вернитесь в дело!

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

...