批处理文件注册控件时的问题

问题起因:

win10系统中,通过批处理文件注册多个控件时,无法完成全部注册。

问题原因查找:

单独手动注册每个控件都是可行的。在非C盘的其它磁盘下,以管理员身份运行批处理文件也可以正常完成全部注册。

当时的批处理文件如下:

cd  %~dp0
regsvr32 /s aaa.ocx
regsvr32 /s bbb.ocx
regsvr32 /s ccc.ocx
exit

后测试验证发现,在执行完regsvr32命令后,可能因为regsvr32进程没有关闭,所以导致无法进行下一句命令,批处理命令处于等待状态。

解决方法:

经查询,可通过 start方式调用命令,使得批处理程序不会等待不动。 在注册全部完成后,杀死regsvr32进程。

修改后的批处理文件如下:

cd  %~dp0
start regsvr32 /s aaa.ocx
start regsvr32 /s bbb.ocx
start regsvr32 /s ccc.ocx
ping -n 2 127.1>nul
taskkill /f /t /im regsvr32.exe
exit

"ping -n X 127.1>nul" 等待X秒

"taskkill /f /t /im A.exe" 关闭A进程

 

补充:

也可添加管理员权限运行,内容如下:

:: 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"  
:--------------------------------------  
start regsvr32 /s aaa.ocx
start regsvr32 /s bbb.ocx
start regsvr32 /s ccc.ocx
ping -n 2 127.1>nul
taskkill /f /t /im regsvr32.exe
exit

 

你可能感兴趣的:(windows,其它)