Win32 API для запуска других EXE - PullRequest
0 голосов
/ 06 августа 2011

Я хотел бы знать, win32 API для программного запуска regsvr32.

У меня есть одно приложение, через которое я могу общаться с устройствами COM-порта. но для достижения связи я должен зарегистрировать MSCOMM32.ocx с помощью regsvr32.exe, но теперь я хотел добавить это положение в мой код. так что нет необходимости запускать regsvr вручную.

Ответы [ 3 ]

2 голосов
/ 06 августа 2011

Вызов Windows CreateProcess API - это то, что вы ищете: http://msdn.microsoft.com/en-us/library/ms682425(v=vs.85).aspx

1 голос
/ 08 августа 2011

У вас уже есть ответ на заголовок вопроса.

Что касается регистрации DLL, я предполагаю, что вы используете VB6, с которым вы не можете (легко) зарегистрировать ее напрямую .

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

Чтобы попросить пользователя запустить его от имени администратора, вы можете использовать ShellExecute () и передать «runas» в качестве глагола с «regsvr32.exe» и путь к mscomm32.ocx в качестве файла и параметры.
Для VB6:

  ShellExecute 0, "runas", "regsvr32.exe", """c:\blah.dll""", "c:\", 0
1 голос
/ 07 августа 2011

Вы можете сделать это, используя комбинацию вызовов Win32 API:

  • LoadLibrary () для загрузки Dll
  • GetProcAddress () для получения адреса функции DllRegisterServer ()
  • Если GetProcAddress находит эту функцию, вызовите ее, чтобы зарегистрировать Dll.

Здесь описана функция DllRegisterServer: MSDN: точка входа DllRegisterServer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...