用于运行其他exe的win32 API

时间:2011-08-06 08:59:50

标签: winapi api

我想知道以编程方式运行regsvr32的win32 API。

我有一个应用程序可以通过它与COM端口设备进行通信。但要实现通信,我必须使用regsvr32.exe注册MSCOMM32.ocx,但现在我想在我的代码中添加此规定。所以不需要手动运行regsvr。

3 个答案:

答案 0 :(得分:2)

您正在寻找Windows CreateProcess API调用:http://msdn.microsoft.com/en-us/library/ms682425(v=vs.85).aspx

答案 1 :(得分:1)

您可以使用win32 api调用的组合来执行此操作:

  • LoadLibrary()加载Dll
  • GetProcAddress()获取DllRegisterServer()函数的地址
  • 如果GetProcAddress找到该函数,请调用它来注册Dll。

这里解释了DllRegisterServer函数:MSDN: DllRegisterServer Entry Point

答案 2 :(得分:1)

您已经获得问题标题的answer

至于注册DLL,我认为你使用的是VB6,你不能(轻松)register it directly

注册它的正确方法是将其作为安装程序的一部分 在应用程序中执行此操作为时已晚,因为您(很可能)通常不会拥有注册所需的管理员权限。

要让用户以管理员身份运行它,您可以使用ShellExecute()并将“runas”作为带有“regsvr32.exe”的动词和mscomm32.ocx的路径作为文件和参数传递。<登记/> 对于VB6:

  ShellExecute 0, "runas", "regsvr32.exe", """c:\blah.dll""", "c:\", 0