把下面的代码保存为opencl.bat
1 @echo off 2 cls 3 echo OpenCL Driver (ICD) Fix for AMD GPU's 4 echo By Patrick Trumpis (https://github.com/ptrumpis/OpenCL-AMD-GPU) 5 echo Inspired by https://stackoverflow.com/a/28407851 6 echo repair (https://chat.deepseek.com/) 7 echo: 8 echo: 9 10 >nul 2>&1 "%SYSTEMROOT%\System32\cacls.exe" "%SYSTEMROOT%\System32\config\system" && ( 11 goto :run 12 ) || ( 13 echo Execution stopped 14 echo ================= 15 echo This script requires administrator rights. 16 echo Please run it again as administrator. 17 echo You can right click the file and select 'Run as administrator' 18 19 echo: 20 pause 21 exit /b 1 22 ) 23 24 :run 25 SETLOCAL EnableDelayedExpansion 26 27 SET ROOTKEY64=HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors 28 SET ROOTKEY32=HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors 29 30 echo Currently installed OpenCL Client Driver's - 64bit 31 echo ================================================== 32 for /f "tokens=1,*" %%A in ('reg query %ROOTKEY64%') do ( 33 echo %%A - %%B 34 ) 35 echo: 36 37 echo Currently installed OpenCL Client Driver's - 32bit 38 echo ================================================== 39 for /f "tokens=1,*" %%A in ('reg query %ROOTKEY32%') do ( 40 echo %%A - %%B 41 ) 42 echo: 43 44 echo: 45 echo This script will now attempt to find and install unregistered OpenCL AMD drivers from Windows (Fast Scan). 46 47 :askUserFastScan 48 set "INPUT=" 49 set /P "INPUT=Do you want to continue? (Y/N): " 50 if /I "!INPUT!" == "Y" ( 51 echo: 52 echo: 53 goto :scanFilesFast 54 ) else if /I "!INPUT!" == "N" ( 55 goto :exit 56 ) else ( 57 goto :askUserFastScan 58 ) 59 60 :scanFilesFast 61 echo Running AMD OpenCL Driver Auto Detection 62 echo ======================================== 63 echo: 64 65 echo Scanning '%SYSTEMROOT%\system32' for 'amdocl*.dll' files, please wait... 66 echo: 67 68 cd /d %SYSTEMROOT%\system32 69 call :registerMissingClientDriver 70 71 echo: 72 echo Fast Scan complete. 73 echo: 74 75 echo: 76 echo This script will now attempt to find and install any unregistered OpenCL AMD drivers found on your computer (Full Scan). 77 78 :askUserFullScan 79 set "INPUT=" 80 set /P "INPUT=Do you want to continue? (Y/N): " 81 if /I "!INPUT!" == "Y" ( 82 echo: 83 echo: 84 goto :scanFilesFull 85 ) else if /I "!INPUT!" == "N" ( 86 goto :complete 87 ) else ( 88 goto :askUserFullScan 89 ) 90 91 92 :scanFilesFull 93 echo Now scanning your PATH for 'amdocl*.dll' files, please wait... 94 echo: 95 96 for %%A in ("%path:;=";"%") do ( 97 if "%%~A" neq "" ( 98 cd /d %%A 99 call :registerMissingClientDriver 100 ) 101 ) 102 103 echo: 104 echo Full Scan complete. 105 echo: 106 107 :complete 108 echo: 109 echo Done. 110 echo: 111 pause 112 113 :exit 114 exit /b 0 115 116 :registerMissingClientDriver 117 for /r %%f in (amdocl*dll) do ( 118 set FILE="%%~dpnxf" 119 set FILENAME=%%~nxf 120 121 for %%A in (amdocl.dll amdocl12cl.dll amdocl12cl64.dll amdocl32.dll amdocl64.dll) do ( 122 if "!FILENAME!"=="%%A" ( 123 echo Found: !FILE! 124 125 rem Improved logic to determine if 32-bit or 64-bit DLL 126 if "!FILENAME!"=="amdocl32.dll" ( 127 set "ROOTKEY=!ROOTKEY32!" 128 ) else if "!FILENAME!"=="amdocl64.dll" ( 129 set "ROOTKEY=!ROOTKEY64!" 130 ) else if "!FILENAME!"=="amdocl12cl64.dll" ( 131 set "ROOTKEY=!ROOTKEY64!" 132 ) else ( 133 rem For other filenames, check if they're in SysWOW64 (32-bit) or System32 (64-bit) 134 echo !FILE! | find /i "SysWOW64" >nul 135 if !ERRORLEVEL! == 0 ( 136 set "ROOTKEY=!ROOTKEY32!" 137 ) else ( 138 set "ROOTKEY=!ROOTKEY64!" 139 ) 140 ) 141 142 reg query !ROOTKEY! >nul 2>&1 143 if !ERRORLEVEL! neq 0 ( 144 reg add !ROOTKEY! /f 145 echo Added Key: !ROOTKEY! 146 ) 147 148 reg query !ROOTKEY! /v !FILE! >nul 2>&1 149 150 if !ERRORLEVEL! neq 0 ( 151 reg add !ROOTKEY! /v !FILE! /t REG_DWORD /d 0 /f >nul 2>&1 152 153 if !ERRORLEVEL! == 0 ( 154 echo Installed: !FILE! to !ROOTKEY! 155 ) 156 ) 157 ) 158 ) 159 ) 160 goto :eof