公司软件部署经常需要注册.com组件,之前的bat批处理需要右键管理员权限运行才行。这里发布一小段命令可以免去这个步骤。
@echo off color 0 REM ________________________________________________________________ >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo 请求管理员权限... 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" REM ________________________________________________________________ echo= echo= echo 管理员权限已获取,正在执行COM注册****** echo= regsvr32 ****Com.dll /s echo 完成****Com.dll注册 echo= echo .COM组件注册完成。 ping -n 3 127.0.0.1>nul
此批处理文件必须和.dll文件放在同一个目录执行。
%cd% 获取当前执行批处理的cmd目录(权限不同目录不同),管理员权限运行目录则为system32
%~dp0 获取当前目录路径
%windir% 获取windows目录路径
%~d0 获取当前盘符
%~sdp0 获取当前盘符和路径的短文件名格式
%~f0 获取此批处理的路径