一、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注册方法”。