游戏狂人
 
- 贡献度
- 52
- 金元
- 9104
- 积分
- 1118
- 精华
- 0
- 注册时间
- 2009-10-6
|
哦也遇到了这个问题,于是我把bat喂给豆包:
**为什么原来会无限弹窗**
旧的 powershell 命令在路径含空格时,`%~f0` 被拆分,StartProcess 执行失败,脚本退出后重新触发提权,**循环弹出 UAC + 黑窗口**。新版加了 `-ArgumentList ''` 解决路径空格解析问题。
这是修复后的:
@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
:: 管理员权限检测
net session >nul 2>&1
if %errorlevel% neq 0 (
:: 修复路径带空格导致反复UAC无限弹窗问题
powershell -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
exit /b
)
set "DRIVERFILE=Randgrid.sys"
set "DRIVERNAME=atvi-randgrid_sr_offline"
set "EXENAME=sp26-cod.exe"
:: 查询驱动服务是否存在
sc query "%DRIVERNAME%" >nul 2>&1
if %errorlevel%==0 (
echo AC service %DRIVERNAME% already exists
goto startgame
) else (
goto install_ac_driver
)
:install_ac_driver
echo Creating kernel service: %DRIVERNAME%
sc.exe create "%DRIVERNAME%" type= kernel binPath="%CD%\%DRIVERFILE%"
if %errorlevel% neq 0 (
echo ERROR: sc create failed, errorcode=%errorlevel%
pause
exit /b
)
echo Service created successfully
goto startgame
:startgame
echo Starting driver %DRIVERNAME%...
sc start "%DRIVERNAME%" >nul 2>&1
if %errorlevel% neq 0 (
echo WARNING: Driver start failed, errorcode=%errorlevel%
)
echo Launching .\sp26\%EXENAME% ...
start /wait .\sp26\%EXENAME% hdeyguxs3zaumvlgvybm2vyc
echo.
echo Game process exited, stopping driver...
sc stop "%DRIVERNAME%" >nul 2>&1
timeout /t 1 /nobreak >nul
echo Removing service %DRIVERNAME%
sc.exe delete "%DRIVERNAME%" >nul 2>&1
timeout /t 1 /nobreak >nul
echo Script finished
pause
exit
|
|