Почему Regsvr32 работает на одной машине, а не на другой? - PullRequest
0 голосов
/ 25 сентября 2018

Когда я иду, чтобы зарегистрировать dll в качестве администратора на моей машине, он работает нормально:

Regsvr32 C: \ nameofdll.dll

Однако, когда я запускаю его на другой машине, это не удается.Почему это так?

1 Ответ

0 голосов
/ 03 октября 2018

Коды ошибок : Коды ошибок можно найти с помощью одного из следующих методов .


Regsvr32.exe - Требуются права администратора : Насколько мне известно, для самостоятельной регистрации требуются права администратора, поскольку она регистрирует библиотеку DLL для каждой машины - или для другихслова в разделах реестра HKLM / HKCR (HKCR представляет собой часть HKLM и объединение из секций HKCU - другими словами, это « эмерджентное представление » из обоих HKCU и HKLM).Теперь я вижу этот ответ , который, кажется, указывает, что существуют способы регистрации COM-серверов на пользователя?Это не работает для моих тестовых файлов OCX, используя этот метод .Я не пробовал пользовательский EXE-файл регистрации из codeproject .

MSI - регистрация COM для каждого пользователя : установщик Windows - с другой стороны- способен устанавливать COM-серверы для каждого пользователя для установок, которые устанавливаются для каждого пользователя.Индивидуальные настройки плохо работают по ряду причин (удобство обслуживания, обновление, исправления, различные ограничения), но это уже другая история.Если вы включите Извлечение COM из Installshield при сборке , как я показал в другом ответе , данные COM добавляются в ваш MSI таким образом, чтобы гарантировать, что сервер COM может быть зарегистрирован для каждого пользователя.- если установка установлена ​​для каждого пользователя или для машины, если установка установлена ​​для каждой машины. Это стандартный способ регистрации COM-файлов с помощью установщика Windows .

Bitness : возможны другие проблемыНапример, упомянутая «битность» COM-сервера.Я встречал очень мало x64 COM-серверов, но они проблематичны, например, при использовании WiX.Насколько я знаю, релиз WiX 3.11 не поддерживает x64 COM-серверы для извлечения.Подобные проблемы могут существовать в Installshield - я не знаю.

Страница поддержки : В 64-разрядной версии операционной системы Windows существует две версии * 1074.* файл:

  • 64-разрядная версия %systemroot%\System32\regsvr32.exe
  • 32-разрядная версия %systemroot%\SysWoW64\regsvr32.exe

Отсутствие зависимостей : Самостоятельная регистрация также может завершиться ошибкой, если для рассматриваемого файла отсутствуют зависимости.Вы можете использовать такой инструмент, как средство проверки зависимостей, или вы можете контролировать с помощью procmon или любое количество инструментов сканера (иметь быстрый просмотр).Обратите внимание, что также возможно, что вам не хватает "языка DLL" для COM-сервера.Например: MyApp-English.dll.Такой файл должен находиться рядом с файлом основного COM-сервера MyApp.dll или MyApp.ocx, чтобы регистрация работала правильно.

Странности : множество других проблемможно увидеть.Начиная от licensing issues, COM interoperability с .NET (regasm.exe), помехи от странных security policies, security software interference - антивирус и т. Д. ... На любое количество other specific and rare factors.

Предупреждение : Я видел, как саморегистрация выполняла незаконные действия и изменяла основные системные значения в процессе саморегистрации - без каких-либо предупреждений или объяснений.Следовательно, рекомендуется избегать самостоятельной регистрации во время развертывания, когда это возможно .

...