Winapi 带/i和不带参数的regsvr32之间的差异

Winapi 带/i和不带参数的regsvr32之间的差异,winapi,com,vb6,cmd,regsvr32,Winapi,Com,Vb6,Cmd,Regsvr32,我能够使用成功注册COM-DLL(用VB6编写)dowFct.DLL regsvr32 dowFct.dll 但是当我试着用 regsvr32 dowFct.dll /i 我收到错误(从德语翻译成英语): 已加载模块dowfct.dll,但未找到DllInstall入口点 我在问我,使用regsvr32时是否与使用/I和不使用任何附加参数不同? 有人能帮我一下吗?出了什么问题谢谢。您是否尝试运行regsvr32/? 它告诉我有一些注意参数被发送到dll文件的DllInstall方法 /i:c

我能够使用成功注册COM-DLL(用VB6编写)
dowFct.DLL

regsvr32 dowFct.dll
但是当我试着用

regsvr32 dowFct.dll /i
我收到错误(从德语翻译成英语):

已加载模块dowfct.dll,但未找到DllInstall入口点

我在问我,使用regsvr32时是否与使用/I和不使用任何附加参数不同?
有人能帮我一下吗?出了什么问题谢谢。

您是否尝试运行
regsvr32/?

它告诉我有一些注意参数被发送到dll文件的DllInstall方法

/i:cmdline:调用DllInstall并向其传递可选的[cmdline]。与/u一起使用时,它调用dll卸载


[]

VB6 COM DLL不导出
DLLInstall()
,这是一个函数,可作为DLL对自身执行设置操作的方式(也是
/i
尝试执行的内容),因此您无需担心它

只需使用
regsvr32 dowFct.dll
(它调用VB编译器为您添加到库中的
DllRegisterServer()
  • 如果没有
    /i
    选项,regsvr32将加载DLL并调用导出的函数
  • 使用
    /i
    选项,regsvr32加载DLL并调用导出的函数
  • 很明显,您的DLL不会导出
    DllInstall
    ,因此它似乎希望通过调用
    DllRegisterServer
    来注册。因此,在调用regsvr32时省略
    /i
    选项

    的文档说明了这两个功能之间的区别:

    DllInstall仅用于应用程序安装和设置。信息技术 不应由应用程序调用。它的目的与 DllRegisterServer或DllUnregisterServer。与这些功能不同,, DllInstall接受一个输入字符串,该字符串可用于指定 各种不同的行动。这允许在中安装DLL 基于任何适当标准的不止一种方法

    要将DllInstall与regsvr32一起使用,请添加“/i”标志,后跟冒号 (:)和一个字符串。字符串将作为 pszCmdLine参数。如果省略冒号和字符串,则pszCmdLine 将设置为空。下面的示例将用于安装 DLL

    regsvr32/i:“安装_1”dllname.dll 调用DllInstall时,bInstall设置为TRUE,pszCmdLine设置为 “安装1”。要卸载DLL,请使用以下命令:

    regsvr32 /u /i:"Install_1" dllname.dll regsvr32/u/i:“安装_1”dllname.dll 对于以上两个示例,DllRegisterServer或 还将调用DllUnregisterServer。要仅调用DllInstall,请添加 a“/n”标志

    regsvr32/n/i:“Install_1”dllname.dll
    到目前为止,我一直假设dowFct.dll
    regsvr32/I dowFct.dll
    regsvr32 dowFct.dll
    相同。不是吗?我不是绝对肯定,但我猜在dll文件上调用了另一个方法,但实际上没有任何输入。可能是 regsvr32 /u /i:"Install_1" dllname.dll regsvr32 /n /i:"Install_1" dllname.dll