一、ocx注册方法

方法一:使用cmd手动注册ocx

1、以管理员身份运行cmd

2、注册ocx,输入命令:regsvr32 "ocx文件的完整路径"

3、如果注册成功,会显示下图弹窗。

方法二:使用bat命令注册ocx(使用管理员权限运行)

1、创建文本文件,写入下列命令(将下列命令中VideoWebCtl.ocx替换成你需要注册的ocx名称即可)

cd /d %~dp0

regsvr32 VideoWebCtl.ocx

2、修改文件后缀名为.bat,将该bat文件放置ocx所在文件夹下

3、然后使用管理员权限运行该bat文件即可。

方法三:使用bat命令注册ocx(双击运行bat文件,无需使用管理员权限运行)

1、创建文本文件,写入下列命令(将下列命令中VideoWebCtl.ocx替换成你需要注册的ocx名称即可)

@echo off

:获取管理员权限

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit

:保持当前目录下运行

cd /d "%~dp0"

regsvr32 /s VideoWebCtl.ocx

2、修改文件后缀名为.bat。然后双击运行该bat文件即可。

扩展:vs安装包自动安装ocx

如果想在C#程序安装时直接自动注册ocx,而不是手动注册,首先将上面方法三中创建的bat文件打包至你的安装包中(下面所示Installer1类的介绍请看-->vs安装包的制作可参考这里 -->打包程序增加自定义操作),然后在自定义安装类Installer1中,写如下代码:

[RunInstaller(true)]

public partial class Installer1 : System.Configuration.Install.Installer

{

// 调用shell32库中ShellExecute实现运行一个外部程序

[DllImport("shell32.dll")]

public extern static int ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);

public Installer1()

{

InitializeComponent();

}

// 安装程序安装后执行

private void Installer1_AfterInstall(object sender, InstallEventArgs e)

{

// 获取程序安装路径

string installPath = this.Context.Parameters["targetdir"].TrimEnd('\\');

try

{

// 获取ocx的bat命令文件位置(该位置根据自己实际放置的路径进行设置)

var ocxPath = Path.Combine(installPath, "ocx", "InstallOCX.bat");

// 调用系统函数运行bat文件,从而代替手动双击运行bat文件

var res = ShellExecute(IntPtr.Zero, "Open", ocxPath, "", "", 0);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

}

二、ocx注册失败解决办法

ocx注册失败,错误代码为0x80040200,错误信息如下图:

情况一:被安全软件拦截导致注册失败,可以关闭安全软件,比如360、瑞星等杀毒或者其它权限管理工具后重新安装软件或重新运行bat试试。

情况二:系统权限问题,使用管理员权限运行bat文件,或者使用管理员权限运行cmd手动注册ocx。方法参见“一、ocx注册方法”。