使用bat注册ocx

当程序中需要调用ocx控件,但未注册控件时,会出现如下错误。

使用bat注册ocx_第1张图片

因此,要正确启动程序,需要先注册ocx控件。

当进行注册还报错,一般有三种情况:

1、文件不存在或者路径错误;

2、没有以管理员身份注册;

3、该空间缺失依赖库

并且,WIN10系统下有两种操作方式。

第一种,在控件exmaple.ocx所在路径以管理员身份打开powershell,输入:

regsvr32.exe example.ocx

注册成功会出现如下提示框,表示成功,然后就能正常运行程序。

使用bat注册ocx_第2张图片

但是往往每次使用前都要用命令行注册很麻烦,特别是给客户时,有的客户不会注册,此时就需要用第二种方法——用bat脚本实现ocx的自动注册,每次使用前,只需以管理员身份运行编写好的bat程序即可完成注册。

bat(Bat To Exe Converter)是批处理文件类型,batch的意思。

打开bat软件->新建,输入

@pushd %~dp0   //获得bat文件执行的路径
regsvr32 example.ocx
@popd

或者参考自:https://blog.csdn.net/guo_lei_lamant/article/details/79711066

@echo off  

:: BatchGotAdmin  
:-------------------------------------  
REM  --> Check for permissions  
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"  

REM --> If error flag set, we do not have admin.  
if '%errorlevel%' NEQ '0' (  
    echo Requesting administrative privileges...  
    goto UACPrompt  
) else ( goto gotAdmin )  

:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"  

    "%temp%\getadmin.vbs"  
    exit /B  

:gotAdmin  
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )  
    pushd "%CD%"  
    CD /D "%~dp0"  
:--------------------------------------  
regsvr32 example.ocx

保存到ocx文件所在目录,命名为regsvr.bat。

然后先以管理员身份运行regsvr.bat,就能完成注册。

用PUSHD/POPD获取bat文件的执行路径

  • PUSHD %~dp0
  • %~dp0 是对%0的扩展,d是drive,也就是盘符,p是路径,所以%~dp0是指当前批处理所在的完整路径(包括盘符)。pushd是设定工作目录。所以 PUSHD %~dp0 就是设定批处理所在的目录为工作目录
  • PUSHD  "%~dp0test"
  • "%~dp0test"也就是批处理所在目录下test目录,所以 PUSHD %~dp0test就是设定批处理所在的目录下的test目录为工作目

具体可参考:https://blog.csdn.net/ljzcom/article/details/80332865

你可能感兴趣的:(小技巧)