Есть ли версия regsvr32 для .NET или Win32? Я хотел бы зарегистрировать COM-DLL с кодом вместо того, чтобы обходить программу regsvr32.Есть ли версия regsvr32 .NET или Win32?
ответ
Стандартный способ регистрации сборки - вызвать функцию экспорта DllRegisterServer
на сборку.
В упрощенном виде regsvr32 существу выполняет следующие действия (проверка ошибок опущено для краткости).
HANDLE lib = LoadLibrary(...);
FARPROC proc = GetProcAddress(lib, "DllRegisterServer");
proc();
Я считаю, что вы просто загрузить DLL, а затем вызвать его на экспорт DllRegisterServer()
функцию.
Да, это просто требует вызова экспортируемой функции. Тем не менее, дьявол находится в деталях. DLL будет загружать все свои неявно связанные зависимые DLL. И их точки доступа DllMain() будут запущены. Это хорошо в простом процессе, таком как regsvr32, не так хорошо в вашем, что нужно выжить за пределами регистрационного шага.
Затем вы получаете разрешения на запись в реестр. UAC определенно остановит это, как для запуска Regsvr32, так и для вызова точки входа напрямую. Чтобы получить разрешение от пользователя, вам понадобится отдельный EXE с манифестом, который запрашивает права администратора. Ты не впереди.
Обратитесь к бесплатному COM-сообществу, предоставив регистрационную информацию в манифесте. Вам больше не придется регистрировать DLL. Вы получите много хитов, если будете искать этот термин.
Моя цель - приложение, которое может установить себя, если вы передадите правильный ключ командной строки, поэтому у меня нет проблем с выходом после вызова DllRegisterServer. Но reg-free COM звучит интересно. –
Я пропустил что-то или не reg-free COM действительно так же просто, как просто установка 'isol' в true? –
Не бойтесь, отдельные приложения хранят свои библиотеки DLL в бок о бок. Подобный вид манифеста hanky-panky. –
- 1. Есть ли межплатформенная версия win32 CopyFile?
- 2. Есть ли версия Concordion .NET?
- 3. Есть ли версия ELMAH для .NET 4?
- 4. Есть ли хорошая версия .NET для DelphiFeeds.com?
- 5. Есть ли 64-разрядная версия psscor2?
- 6. Есть ли сплошная. Net-оболочка для управляемого Wifi Win32 API?
- 7. Есть ли кросс-платформа .NET, эквивалентная Win32.SetEvent (int)?
- 8. Есть ли версия famo.us
- 9. Есть ли автономная версия .net core tooling preview 2?
- 10. Есть ли «версия» Microsoft/.net «визуализации Google» api
- 11. Regsvr32 сбой в окне 7
- 12. Есть ли тихая версия subprocess.call?
- 13. Есть ли неограниченная версия kinetic.js?
- 14. Есть ли обновленная версия FolderBrowserDialog?
- 15. Есть ли приватная версия readthedocs?
- 16. Есть ли x64-версия MsStkPrp.dll
- 17. Есть ли безопасная версия Select()?
- 18. Есть ли версия Cype CTypeDynamic?
- 19. Есть ли общая версия Array.newInstance?
- 20. питона Distutils win32 версия вопроса
- 21. Есть ли jQuery версия Scriptaculous?
- 22. есть ли последняя версия pyUIQ?
- 23. Есть ли бесплатная версия SSIS?
- 24. pthread_tryjoin_np? Есть ли версия Windows?
- 25. Есть ли минимальная версия php5ts.dll?
- 26. Есть ли версия Mac DBAccess?
- 27. Есть ли инвертированная версия numpy.all()?
- 28. Есть ли асинхронная версия PLINQ?
- 29. Есть ли пользовательская версия jQuery?
- 30. Есть ли неизменная версия Object.assign?
Я действительно надеялся ответить 'InstallUtil';) – leppie
Если reg-free COM не работает для меня, я, вероятно, в конечном итоге напишу класс, совместимый с InstallUtil. –
InstallUtil тоже не может работать, у вас нет необходимых разрешений. Не то, чтобы он был разработан для COM BT. –