Регистрация dll в windows server 2008 r2 x64

Если фоновый процесс COM-соединения оканчивается ошибкой

Если фоновый процесс COM-соединения оканчивается ошибкой

{Обработка.ОбменДаннымиXML.МодульОбъекта(15947)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string

, то нужно зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.

В 32-битной версии сервера проблема решилась бы командой
regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»

но в 64-битной версии команда будет примерно такой * :
C:WindowsSysWOW64regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»

Затем перезайдите в 1С Предприятие и попробуйте установить COM-соединение снова.

* если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u

** если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить, а затем зарегистрируйте библиотеку, как написано выше

Запись опубликована в рубрике Настройка, Регламенты с метками com-соединение. Добавьте в закладки постоянную ссылку.

Error 0x80040154 is COM’s REGDB_E_CLASSNOTREG, which means «Class not registered». Basically, a COM class is not declared in the installation registry.

If you get this error when trying to register a DLL, it may be possible that the registration code for this DLL is trying to instantiate another COM server (DLL or EXE) which is missing or not registered on this installation.

If you don’t have access to the original DLL source, I would suggest to use SysInternal’s Process Monitor tool to track COM registry lookups (there use to be a more simple RegMon tool but it may not work any more).

You should put a filter on the working process (here: Regsvr32.exe) to only capture what’s interesting. Then you should look for queries on HKEY_CLASSES_ROOT[a progid, a string] that fail (with the NAME_NOT_FOUND error for example), or queries on HKEY_CLASSES_ROOTCLSID[a guid] that fail.

PS: Unfortunately, there may be many thing that seem to fail on a perfectly working Windows system, so you’ll have to study all errors carefully. Good luck :-)

Windows 10 Pro released in July 2015 Windows Vista Enterprise Windows Vista Business Windows Vista Home Basic Windows Vista Home Premium Windows Vista Ultimate Microsoft Windows XP Home Edition Microsoft Windows XP Professional Microsoft Windows XP Tablet PC Edition Windows 7 Enterprise Windows 7 Home Basic Windows 7 Home Premium Windows 7 Professional Windows 7 Ultimate Windows 8 Windows 8 Enterprise Windows 8 Pro Windows 8.1 Windows 8.1 Enterprise Windows 8.1 Pro Еще…Меньше

Если вы получили сообщение об ошибке, описания которого нет в этой статье, можно найти его подробное объяснение, рекомендуемые действия и список дополнительных ресурсов поддержки на странице ошибок и событий TechNet. 

Аннотация

Regsvr32 — это служебная программа командной строки для регистрации и отмены регистрации элементов управления OLE, например ActiveX и библиотеки DLL в реестре Windows. Средство Regsvr32.exe установлено в папке %systemroot%System32 в ОС Windows XP и более поздних версиях Windows.

Примечание. В 64-разрядных версиях Windows есть две версии файла Regsv32.exe:

  • 64-разрядная версия — %systemroot%System32regsvr32.exe;

  • 32-разрядная версия — %systemroot%SysWoW64regsvr32.exe.

Синтаксис команды Regsvr32

Программа RegSvr32.exe имеет следующие параметры командной строки.

Regsvr32 [/u] [/n] [/i[:строка_команд]] DLL-файл

/u — отменяет регистрацию сервера

/i — вызывает DllInstall, передавая ей в параметре необязательную строку_команд; при использовании с ключом /u вызывает DllUnInstall.
/n — не вызывает DllRegisterServer; это может использоваться с ключом /i

/s – «тихий» режим; окна сообщений не отображаются

Типичные решения ошибок Regsvr32

При появлении ошибки Regsvr32 попробуйте устранить ее одним из следующих способов.

  • Способ 1. Повторный запуск команды Regsvr32 в командной строке с повышенными привилегиямиЧтобы открыть командную строку с повышенными привилегиями, выполните указанные ниже действия.

    Windows 8.1 и Windows 8Проведите пальцем от правого края экрана к центру и коснитесь кнопки Поиск. Либо, если вы используете мышь, переместите указатель в правый нижний угол экрана и щелкните кнопку Поиск. Введите запрос Командная строка в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, затем выберите команду Запуск от имени администратора. Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Разрешить.

    Windows 7 и Windows VistaНажмите кнопку Пуск, введите запрос Командная строка или cmd в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, а затем выберите команду Запуск от имени администратора. Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Разрешить.

    Windows XPВойдите в систему в качестве администратора или с другой учетной записью с правами администратора и откройте окно «Командная строка».

  • Способ 2. Использование 32-разрядной версии Regsvr32 для регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС WindowsЕсли при регистрации 32-разрядной библиотеки DLL в 64-разрядной версии ОС Windows появляется ошибка, выполните следующие действия.

    1. Откройте командную строку с повышенными привилегиями.

    2. Если 32-разрядная библиотека DLL находится в папке %systemroot%System32, переместите ее в папку %systemroot%SysWoW64.

    3. Выполните следующую команду:

      %systemroot%SysWoW64regsvr32 <full path of the DLL>

Сообщения об ошибках Regsvr32

В приведенной ниже таблице содержатся сообщения об ошибках RegSvr32 и возможные причины их возникновения.

Сообщение об ошибке

Причина

Недопустимый параметр командной строки «»%1″». Проверьте использование команды и повторите попытку.

Введено недопустимое сочетание параметров командной строки для вызова средства regsvr32.exe.

Эта команда допустима только в том случае, если открыт проект элемента OLE Activex в Microsoft Visual Studio.

Средство Regsvr32.exe вызвано программой Visual Studio, но в командной строке не указано ни одного модуля.

Чтобы зарегистрировать модуль, нужно задать имя двоичного файла.

Средство Regsvr32.exe вызвано без указания модулей в командной строке.

Не удалось выполнить команду OleInitialize. Недостаточно свободной оперативной памяти на этом компьютере. Закройте все открытые программы и повторите попытку.

Средство Regsvr32 должно инициализировать библиотеку COM, прежде чем вызывать ее функции, и отменить инициализацию при завершении работы. Это сообщение об ошибке выводится, если попытка инициализации или ее отмены не были успешными.

Не удалось загрузить модуль «%1».nn Проверьте, что двоичный файл хранится на указанном пути или запустите отладку, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами.nn%2.

При загрузке указанного в командной строке модуля произошла ошибка. Текст ошибки выводится как часть сообщения.

Модуль «%1″ загружен, но точка входа %2 не найдена.nnПроверьте, что » %1″ является правильным файлом DLL или OCX и повторите попытку.

Средству Regsvr32.exe не удалось найти необходимую точку входа модуля, указанного в командной строке. Это может произойти при неправильном экспорте точек входа из модуля или если модуль не является DLL- либо OCX-файлом.

Модуль » %1″ загружен, но не удалось выполнить вызов %2, код ошибки: %3.nnДля получения дополнительных сведений об этой ошибке выполните поиск в Интернете, указав код ошибки как аргумент поиска.

При вызове средством regsvr32.exe точки входа модуля, указанного в командной строке, произошла ошибка. Код ошибки выводится как часть сообщения.

Возможно, модуль «%1» несовместим с версией Windows, работающей на этом компьютере. Проверьте, совместим ли этот модуль с x86 (32-разрядной) или x64 (64-разрядной) версией regsvr32.exe.

Эта ошибка может произойти, если средство regsvr32.exe запущено на 32-разрядном (x86) компьютере, а в командной строке указан 64-разрядный модуль.

В приведенной ниже таблице содержатся сообщения об ошибках RegSvr32 и возможные причины их возникновения.

Сообщение об ошибке

Причина

Нераспознанный флаг: /неверный_флаг

Введено недопустимое сочетание флагов и ключей.

Не указано имя DLL.

Не введено имя DLL-файла.

Имя_DLL было загружено, но найти точку входа для DllRegisterServer или DllUnregisterServer не удалось.

Файл с указанным именем DLL не является DLL- или OCX-файлом. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 wjview.exe.

Имя_DLL не является исполняемым файлом, и ни одного модуля поддержки для этого типа файлов не зарегистрировано.

Файл с указанным именем DLL не является исполняемым файлом EXE, DLL или OCX. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 autoexec.bat.

Имя_DLL не поддерживает автоматическую регистрацию, либо в памяти находится поврежденная версия.

Например, при вводе команды «regsvr32 icwdial.dll» будет возвращено это сообщение об ошибке, так как файл Icwdial.dll не регистрируется автоматически. При подозрении на наличие в памяти поврежденной версии файла с указанным именем DLL перезагрузите компьютер или повторно извлеките исходную версию файла.

Ошибка функции OleInitialize (или OleUninitialize)

Средство Regsvr32 должно инициализировать библиотеку COM, прежде чем вызывать ее функции, и отменить инициализацию при завершении работы. Эти сообщения об ошибке возникают, если попытка инициализации библиотеки COM или ее отмены не были успешными. Например, файл Ole32.dll поврежден или является неправильной версией.

Сбой при загрузке библиотеки («Имя_DLL»). GetlastError возвращает ошибку 0x00000485

Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND). Это означает, что «Не найден один из файлов библиотек, необходимых для выполнения данного приложения». Например, при вводе команды regsvr32 missing.dll будет возвращено это сообщение об ошибке, если файл Missing.dll не найден.

Сбой при загрузке библиотеки («Имя_DLL»). GetLastError возвращает ошибку 0x00000002

Winerror.h, 0x00000002 = 2 (ERROR_FILE_NOT_FOUND). Это означает «Не удается найти указанный файл». Т. е. не найден соответствующий DLL-файл. Например, при вводе команды regsvr32 icwdial.dll будет возвращено это сообщение об ошибке, если файл Tapi32.dll не найден.

Сбой при загрузке библиотеки (dskmaint.dll). GetLastError возвращает ошибку 0x000001f

Winerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE). Это означает «Присоединенное к системе устройство не работает». Это происходит при попытке регистрации файла Win16.dll. Например, это сообщение об ошибке будет отображено, если введена команда regsvr32 dskmaint.dll.

Сбой при загрузке DllRegisterServer (или DllUnregisterServer) в Имя_DLL. Возвращенный код: строка

В файле Winerror.h найдите строку, указанную в сообщении.

Нужна дополнительная помощь?

Я пытаюсь зарегистрировать файл com DLL на Windows Server 2008 R2. Вот шаги, которые я предпринял:—9—>

  1. Run cmd в качестве администратора
  2. c:windowssystem32regsvr32.exe c:tempdltemp12.dll

когда я выполняю эту команду, я получаю эту ошибку:

модуль temp12.dll не удалось загрузить. Проверьте, что двоичный файл хранится на указанном пути или дебют, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми .DLL файлы. Указанный модуль не может быть найдено.

я смог зарегистрировать тот же файл DLL в Windows 2000.

я тоже пробовал

c:windowssyswow64regsvr32 "c:tempdltemp12.dll"

и я получил эту ошибку:

модуль c:tempdltemp12.dll был загружен, но вызов DllRegisterServer ошибка с кодом 0x80040154. Для получения дополнительной информации об этой проблеме выполните поиск в интернете, используя код ошибки в качестве условия поиска

8 ответов


Это ошибка, которую вы получаете, когда сама DLL требует, чтобы другой COM-сервер был зарегистрирован первым или имеет зависимость от другой DLL, которая недоступна. К Regsvr32.exe инструмент делает очень мало, он вызывает LoadLibrary () для загрузки DLL, которая передается в аргументе командной строки. Затем GetProcAddress (), чтобы найти точку входа DllRegisterServer () в DLL. И вызывает его, чтобы оставить его до COM-сервера для регистрации.

Что это код делает, это справедливо неопределяемых. Диагностика, которую вы получили, однако, довольно очевидна из кода ошибки, по какой-то причине этот COM-сервер должен быть зарегистрирован первым. Сообщение об ошибке дерьмово, оно не говорит вам что другой, он должен. Печальный побочный эффект того, как работает обработка ошибок COM.

для устранения неполадок используйте инструмент ProcMon SysInternals. Он показывает вам, какие ключи реестра Regsvr32.exe (на самом деле: COM-сервер) открывается, чтобы найти сервер. Искать доступ к ключу CLSID. Это дает вам подсказку, что {guid} он ищет. Это все еще не совсем говорит вам о DLL сервера, вы должны сравнить трассировку с той, которую вы получаете от машины, которая работает. Ключ InprocServer32 имеет путь DLL.


вам может потребоваться зарегистрировать эту DLL, используя 32-разрядную версию regsvr32.exe:

c:windowssyswow64regsvr32 c:tempdltemp12.dll


ошибка 0x80040154-это REGDB_E_CLASSNOTREG COM, что означает «класс не зарегистрирован». В основном класс COM не объявляется в реестре установки.

Если вы получите эту ошибку при попытке зарегистрировать DLL, возможно, что регистрационный код для этой DLL пытается создать экземпляр другое COM-сервер (DLL или EXE), который отсутствует или не зарегистрирован в этой установке.

Если у вас нет доступа к исходному источнику DLL, я бы предлагаю использовать SysInternal-х Контролировать Процесс инструмент для отслеживания поиска реестра COM (используется более простой инструмент RegMon, но он может больше не работать).

вы должны поставить фильтр на рабочий процесс (здесь: Regsvr32.exe), чтобы захватить только то, что интересно. Тогда вы должны искать запросы на HKEY_CLASSES_ROOT[a progid, строка], которая терпит неудачу (например, с ошибкой NAME_NOT_FOUND), или запросы на HKEY_CLASSES_ROOTCLSID[guid], которые неудача.

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


Я нашел аналогичную проблему при регистрации моего activeX (OCX) в windows server 2008 R2.Чтобы решить эту проблему, я использовалhttp://www.chestysoft.com/dllregsvr/default.asp инструмент.Существует некоторая проблема зависимости с моим ocx, поэтому я получаю » модуль temp12.не удалось загрузить dll. Проверьте, что двоичный файл хранится на указанном пути или дебют, чтобы диагностировать проблемы с этим двоичным файлом или зависимыми .DLL-файл. Не удалось найти указанный модуль » сообщение об ошибке.
Когда вы пытаетесь зарегистрирован ваш OCX с помощью этого инструмента он предложит сообщение, если ocx имеет зависимость или вы получите сообщение об успехе.Я получил сообщение для mfc70.dll и msvcr70.зависимость dll.поэтому я вставляю эти dll в папку system32 C:windows и дело сделано.После этого я успешно регистрирую свой ocx.Я использовал 32-битную версию chestysoft tool (dllregsvr.exe) на 64-битной машине windows server 2008 R2.


  • возможно, распространяемый пакет Microsoft Visual C++ не установлен на целевой машине (или имеет неправильную версию)
    загрузите распространяемый пакет Microsoft Visual C++
  • возможно, вы не построили .dll с конфигурацией выпуска (но с отладкой вместо)
    http://www.davidlenihan.com/2008/01/choosing_the_correct_cc_runtim.html

вам может потребоваться установить ATL, если ваши COM-объекты используют ATL, как описано в этой статье KB:

http://support.microsoft.com/kb/201191

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


Это то, что должно произойти.

вам нужно скопировать DLL, которую вы хотите зарегистрировать:
c:windowsSysWOW64

затем в диалоговом окне «Выполнить» введите это в:
C:WindowsSysWOW64regsvr32.exe c:windowssystem32YourDLL.dll

и вы получите сообщение:

DllRegisterServer в c:windowssystem32YourDLL — … dll файлы удалось.


вам нужен полный путь к regsvr32, поэтому %windir$system32regsvr32


  • Remove From My Forums
  • Question

  • Hi,

    I would like to ask how to manually register exe or dll files in DCOM in a Windows Server 2008 x64 environment. I have an application Monarch which is made by Datawatch that’s not being registered in the DCOM of Windows Server 2008 x64. It’s a 32 bit application and is registered successfully in Windows Server 2008 x86 but not in the 64 bit variant. I’ve also tested it in a Windows XP x64 OS and it was also registered properly. I’ve verified this via DCOM Config.

    Is there a way to manually register it? I’ve tried xxxxx.exe /regserver but it didn’t work.

Answers

  • Hi Ysoltani,

    You need to use dcomcnfg to register application in windows 2008 / 2003.

    I would like to know if registration was successful and your app is not listed in the DCOM

    Verify if your appID has a corresponding class ID

    under registry verify if your app got registered unde r

    HKEY_CLASSS_ROOTAppID.

    • Marked as answer by

      Wednesday, January 20, 2010 8:52 AM

  • Remove From My Forums
  • Question

  • Hi,

    I would like to ask how to manually register exe or dll files in DCOM in a Windows Server 2008 x64 environment. I have an application Monarch which is made by Datawatch that’s not being registered in the DCOM of Windows Server 2008 x64. It’s a 32 bit application and is registered successfully in Windows Server 2008 x86 but not in the 64 bit variant. I’ve also tested it in a Windows XP x64 OS and it was also registered properly. I’ve verified this via DCOM Config.

    Is there a way to manually register it? I’ve tried xxxxx.exe /regserver but it didn’t work.

Answers

  • Hi Ysoltani,

    You need to use dcomcnfg to register application in windows 2008 / 2003.

    I would like to know if registration was successful and your app is not listed in the DCOM

    Verify if your appID has a corresponding class ID

    under registry verify if your app got registered unde r

    HKEY_CLASSS_ROOTAppID.

    • Marked as answer by

      Wednesday, January 20, 2010 8:52 AM

Содержание

  • Варианты решения проблемы
    • Способ 1: OCX/DLL Manager
    • Способ 2: Меню «Выполнить»
    • Способ 3: Командная строка
    • Способ 4: Открыть с помощью
    • Возможные ошибки
  • Вопросы и ответы

Как зарегистрировать dll библиотеку в системе

После установки различных программ или игр можно столкнуться с ситуацией, когда при включении возникает ошибка «Запуск программы произвести невозможно, так как требуемой DLL нет в системе». Несмотря на то, что ОС семейства Windows обычно регистрируют библиотеки в фоновом режиме, после того, как вы скачаете и поместите ваш DLL файл в соответствующее место, ошибка все равно возникает, и система просто его «не видит». Чтобы это исправить, нужно зарегистрировать библиотеку. Как это можно сделать, будет рассказано далее в этой статье.

Варианты решения проблемы

Имеется несколько методов, позволяющих устранить данную проблему. Рассмотрим каждый из них подробнее.

Способ 1: OCX/DLL Manager

OCX/DLL Manager – это маленькая программа которая может помочь зарегистрировать библиотеку или файл OCX.

Загрузить программу OCX/DLL Manager

Для этого вам нужно будет:

  1. Нажать на пункт меню «Register OCX/DLL».
  2. Выбрать тип файла, который будете регистрировать.
  3. При помощи кнопки «Browse» указать местоположение DLL.
  4. Нажать на кнопку «Register» и программа сама зарегистрирует файл.

Программа OCX DLL Manager

OCX/DLL Manager также умеет отменять регистрацию библиотеки, для этого понадобится выбрать в меню пункт «Unregister OCX/DLL» и в последствии проделать все те же операции, как и в первом случае. Функция отмены может вам понадобиться для сравнения результатов при активированном файле и при отключенном, а также в процессе удаления некоторых компьютерных вирусов.

В процессе регистрации, система может выдать вам ошибку, говорящую о том, что требуются права администратора. В таком случае, нужно запустить программу нажав на неё правой кнопкой мыши, и выбрать «Запуск от имени администратора».

Запуск программы от имени администратора OCX DLL Manager

Способ 2: Меню «Выполнить»

Можно зарегистрировать DLL, используя команду «Выполнить» в стартовом меню операционной системы Windows. Для этого нужно будет произвести следующие действия:

  1. Нажать клавиатурную комбинацию «Windows + R» или выбрать пункт «Выполнить» из меню «Пуск».
  2. Открываем меню Выполнить

  3. Ввести имя программы, которая будет регистрировать библиотеку — regsvr32.exe, и путь, по которому размещен файл. В итоге должно получиться так:
  4. regsvr32.exe C:WindowsSystem32dllname.dll

    где dllname — это имя вашего файла.

    Регистрируем DLL библиотеку через меню Выполнить

    Lumpics.ru

    Этот пример подойдёт вам в том случае, если операционная система установлена на диск С. Если она находится в другом месте, то нужно будет поменять букву диска или воспользоваться командой:

    %systemroot%System32regsvr32.exe %windir%System32dllname.dll

    Команда для регистрации dll которая сама находит папку где у вас установлена ОС

    В таком варианте программа сама находит папку где у вас установлена ОС и запускает регистрацию указанного DLL файла.

    В случае с 64-разрядной системой у вас будет две программы regsvr32 — одна находится в папке:

    C:WindowsSysWOW64

    и вторая по пути:

    C:WindowsSystem32

    Это разные файлы, которые используются раздельно для соответствующих ситуаций. Если у вас 64-битная ОС, а файл DLL 32-битный, тогда сам файл библиотеки должен быть помещен в папку:

    WindowsSysWoW64

    и команда будет выглядеть уже так:

    %windir%SysWoW64regsvr32.exe %windir%SysWoW64dllname.dll

    Команда для регистрации dll в 64-битной системе

  5. Нажмите «Enter» или кнопку «OK»; система выдаст вам сообщение о том, успешно или нет была зарегистрирована библиотека.

Способ 3: Командная строка

Регистрация файла через командную строку не сильно отличается от второго варианта:

  1. Выберите команду «Выполнить» в меню «Пуск».
  2. Впишите в открывшемся поле для ввода cmd.
  3. Нажмите «Enter».

Перед вами появится окно, в котором нужно будет вводить те же команды, что и во втором варианте.

Регистрируем DLL библиотеку через командную строку

Надо отметить, что у окна командной строки имеется функция вставки скопированного текста (для удобства). Найти это меню можно, нажав правой кнопкой на пиктограмме в левом верхнем углу.

Меню вставки в командной строке Windows

Способ 4: Открыть с помощью

  1. Откройте меню файла, который будете регистрировать, нажав по нему правой кнопкой мыши.
  2. Выберите «Открыть с помощью» в появившемся меню.
  3. Регистрируем DLL библиотеку через меню Открыть с помощью

  4. Нажимаете «Обзор» и выберете программу regsvr32.exe из следующей директории:
  5. Windows/System32

    или в случае, если вы работаете в 64-битной системе, а файл DLL 32-разрядный:

    Windows/SysWow64

  6. Откройте DLL с помощью этой программы. Система выдаст сообщение об успешной регистрации.

Возможные ошибки

«Файл не совместим с установленной версией Windows» — это означает, что вы, скорее всего, пытаетесь зарегистрировать 64-разрядную DLL в 32-битной системе или наоборот. Воспользуйтесь соответствующей командой, описанной во втором способе.

«Точка входа не найдена» — не все библиотеки DLL можно зарегистрировать, некоторые из них просто не поддерживают команду DllRegisterServer. Также, возникновение ошибки может быть вызвано тем, что файл уже зарегистрирован системой. Существуют сайты, распространяющие файлы, которые в реальности не являются библиотеками. В таком случае, естественно, зарегистрировать ничего не выйдет.

В заключение нужно сказать, что суть всех предложенных вариантов одна и та же — это просто разные методы запуска команды регистрации — кому как удобнее.

  • Remove From My Forums
  • Вопрос

  • Здравствуйте.

    Есть Windows Server 2008 R2.

    Пользователи подключаются по RDP. необходимо чтобы dll ,бралась из своей папки пользователя.

    Поэтому возникает необходимость регистрации библиотеки только для конкретного пользователя. Таких регистраций может быть несколько. Главное, чтобы каждый пользователь брал «свою» библиотеку.

    Подскажите, пожалуйста, как это правильно сделать.

    Андрей.

Ответы

  • На сколько я знаю в общем случае никак.

    Регистрация требуется только для COM DLL, a ключи регистрации COM находятся в реестре в ветке HKEY_LOCAL_MACHINESOFTWAREClasses которая одна на всех пользователей. 

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

    Вам видимо следует проанализировать поставленную цель (то есть зачем вам это надо) и найти другое решение.


    This posting is provided «AS IS» with no warranties, and confers no rights.

    • Помечено в качестве ответа

      6 декабря 2018 г. 8:52

  • Есть еще ветка HKEY_CURRENT_USERSoftwareClasses. Я так понимаю, что ключ должен быть зарегистрирован только в нем, тогда все будет работать правильно. Так? Или я ошибаюсь. Где в первую очередь ищутся ключи в HKCU? Если это так, то скорее всего
    нужно просто скопировать раздел в эту ветку. Я прав?

    Ветка такая есть, но на сколько я знаю там нет собственно регистрации COM. Но, конечно, вы можете попробовать. 

    Процесс объединения ключей описан тут:

    https://docs.microsoft.com/en-us/windows/desktop/sysinfo/hkey-classes-root-key


    This posting is provided «AS IS» with no warranties, and confers no rights.

    • Помечено в качестве ответа
      Petko KrushevMicrosoft contingent staff
      6 декабря 2018 г. 8:52

Like this post? Please share to your friends:
  • Регистрация dll в windows 7 x32
  • Регистрация dll в windows 10 x64 командная строка
  • Регистрация dll в windows 10 x64 cmd
  • Регистрация dll 64 бит windows 10
  • Регистрация comconnector comcntr dll в windows 7 64 разрядной