@echo off if "X%TARGET_PRG_DIR%" == "X" set TARGET_PRG_DIR=%~dp0 ver | find "5.1" && set wintype=xp ver | find "6.1" && set wintype=win7 @REM 提升权限,用于win7及win10,对于xp会失败,直接跳过 if "%wintype%"=="xp" goto realProcess @echo off CLS ECHO. ECHO ================================ ECHO 获取批处理文件管理员权限 ECHO ================================ :init setlocal DisableDelayedExpansion set "batchPath=%~0" for %%k in (%0) do set batchName=%%~nk set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs" setlocal EnableDelayedExpansion :checkPrivileges NET FILE 1>NUL 2>NUL if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) ECHO. ECHO ******************************** ECHO 请求 UAC 权限批准…… ECHO ******************************** ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%" ECHO args = "ELEV " >> "%vbsGetPrivileges%" ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%" ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%" ECHO Next >> "%vbsGetPrivileges%" ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%" "%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %* exit /B :gotPrivileges setlocal & pushd . cd /d %~dp0 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) @rem ========================= @rem 实际处理从此开始 :realProcess @echo off @rem 首次启动才看得到这个,以后应该会最小化 @echo 启动... cd /d %~dp0 >nul 2>&1 set CMDPAR1=%1 set CMDPAR2=%2 set CMDPAR3=%3 set CMDPAR4=%4 set CMDPAR5=%5 @rem 启动延时 if "X%CMDPAR1:~0,5%"=="Xdelay" ( set DELAY_SECOND=%CMDPAR1:~5% ) if "X%CMDPAR2:~0,5%"=="Xdelay" ( set DELAY_SECOND=%CMDPAR2:~5% ) if "X%CMDPAR3:~0,5%"=="Xdelay" ( set DELAY_SECOND=%CMDPAR3:~5% ) if "X%CMDPAR4:~0,5%"=="Xdelay" ( set DELAY_SECOND=%CMDPAR4:~5% ) if "X%CMDPAR5:~0,5%"=="Xdelay" ( set DELAY_SECOND=%CMDPAR5:~5% ) @echo 等待环境可用(%DELAY_SECOND%秒) @ping 127.0.0.1 -n %DELAY_SECOND% >nul 2>&1 sc start hasplms >nul 2>&1 shortcut.exe $desktop\%PROGRAM_NAME%.lnk %0 "" "%cd%\ico\vms.ico" 0 min >nul 2>&1 taskkill /f /im %PROGRAM_FILE% >nul 2>&1 start %PROGRAM_FILE% %CMDPAR1% %CMDPAR2% %CMDPAR3% %CMDPAR4% %CMDPAR5% >nul 2>&1 exit /b >nul 2>&1