IDM 下载器 汉化注册激活
将以下程序更改为.bat文件、使用windows的管理员权限打开。
汉化于:https://github.com/WindowsAddict/IDM-Activation-Script
@setlocal DisableDelayedExpansion @echo off ::============================================================================ :: :: IDM Activation Script (IAS) :: :: Homepages: https://github.com/WindowsAddict/IDM-Activation-Script :: https://massgrave.dev/idm-activation-script :: :: Email: windowsaddict@protonmail.com :: ::============================================================================ :: Add custom name in IDM license info, prefer to write it in English and/or numeric in below line after = sign, set name= : Parameters_info :: For activation in unattended mode, run the script with /act parameter. :: For reset in unattended mode, run the script with /res parameter. :: To enable silent mode with above two methods, run the script with /s parameter. ::======================================================================================================================================== :: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows :: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows set "_cmdf=%~f0" for %%# in (%*) do ( if /i "%%#"=="r1" set r1=1 if /i "%%#"=="r2" set r2=1 ) if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 ( setlocal EnableDelayedExpansion start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %* r1" exit /b ) :: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 if not defined r2 ( setlocal EnableDelayedExpansion start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %* r2" exit /b ) :: Set Path variable, it helps if it is misconfigured in the system set "PATH=%SystemRoot%\System32;%SystemRoot%\System32\wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" if exist "%SystemRoot%\Sysnative\reg.exe" ( set "PATH=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%PATH%" ) :: Check LF line ending pushd "%~dp0" >nul findstr /rxc:".*" "%~nx0" if not %errorlevel%==0 ( echo: echo 错误:脚本LF行结尾有问题,或者读取失败。 echo: ping 127.0.0.1 -n 6 > nul popd exit /b ) popd ::======================================================================================================================================== cls color 07 set _args= set _elev= set reset= set Silent= set activate= set _args=%* if defined _args set _args=%_args:"=% if defined _args ( for %%A in (%_args%) do ( if /i "%%A"=="-el" set _elev=1 if /i "%%A"=="/res" set Unattended=1&设置激活=&设置重置=1 if /i "%%A"=="/act" set Unattended=1&设置激活=1&设置重置= if /i "%%A"=="/s" set Unattended=1&设置静音=1 ) ) ::======================================================================================================================================== set winbuild=1 set "nul=>nul 2>&1" set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G set _NCS=1 if %winbuild% LSS 10586 set _NCS=0 if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0) call :_colorprep set "nceline=echo: &echo ==== 错误 ==== &echo:" set "line=________________________________________________________________________________________" set "_buf={$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" if defined Silent if not defined activate if not defined reset exit /b if defined Silent call :begin %nul% & exit /b :begin ::======================================================================================================================================== if not exist "%_psc%" ( %nceline% echo 系统中未安装 Windows PowerShell。 echo 正在中止... goto done2 ) if %winbuild% LSS 7600 ( %nceline% echo 检测到不支持的操作系统版本。 echo 项目仅支持 Windows 7/8/8.1/10/11及其服务器等系统版本。 goto done2 ) ::======================================================================================================================================== :: Fix for the special characters limitation in path name :: Thanks to @abbodi1406 set "_work=%~dp0" if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" set "_batf=%~f0" set "_batp=%_batf:'=''%" set _PSarg="""%~f0""" -el %_args% set "_appdata=%appdata%" for /f "tokens=2*" %%a in ('reg query "HKCU\Software\DownloadManager" /v ExePath 2^>nul') do call set "IDMan=%%b" setlocal EnableDelayedExpansion ::======================================================================================================================================== :: Elevate script as admin and pass arguments and preventing loop >nul fltmc || ( if not defined _elev %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b %nceline% echo 此脚本需要管理员权限。 echo 为此,请右键单击该脚本并选择 "以管理员身份运行"。 goto done2 ) ::======================================================================================================================================== :: Below code also works for ARM64 Windows 10 (including x64 bit emulation) reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v "Identifier" | find /i "x86" 1>nul && set arch=x86|| set arch=x64 if not exist "!IDMan!" ( if %arch%==x64 set "IDMan=%ProgramFiles(x86)%\Internet Download Manager\IDMan.exe" if %arch%==x86 set "IDMan=%ProgramFiles%\Internet Download Manager\IDMan.exe" ) if "%arch%"=="x86" ( set "CLSID=HKCU\Software\Classes\CLSID" set "HKLM=HKLM\Software\Internet Download Manager" set "_tok=5" ) else ( set "CLSID=HKCU\Software\Classes\Wow6432Node\CLSID" set "HKLM=HKLM\SOFTWARE\Wow6432Node\Internet Download Manager" set "_tok=6" ) set _temp=%SystemRoot%\Temp set regdata=%SystemRoot%\Temp\regdata.txt set "idmcheck=tasklist /fi "imagename eq idman.exe" | findstr /i "idman.exe" >nul" ::======================================================================================================================================== if defined Unattended ( if defined reset goto _reset if defined activate goto _activate ) :MainMenu cls title IDM 激活脚本 0.8 mode 75, 30 :: Check firewall status set /a _ena=0 set /a _dis=0 for %%# in (DomainProfile PublicProfile StandardProfile) do ( for /f "skip=2 tokens=2*" %%a in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\%%# /v EnableFirewall 2^>nul') do ( if /i %%b equ 0x1 (set /a _ena+=1) else (set /a _dis+=1) ) ) if %_ena%==3 ( set _status=启用 set _col=%_Green% ) if %_dis%==3 ( set _status=Disabled set _col=%_Red% ) if not %_ena%==3 if not %_dis%==3 ( set _status=Status_Unclear set _col=%_Yellow% ) echo: echo: echo: echo: echo: echo: echo: ___________________________________________________ echo: echo: [1] 激活 IDM echo: [2] 重置 IDM 激活 / 注册试用 echo: _____________________________________________ echo: call :_color2 %_White% " [3] 切换 Windows 防火墙 " %_col% "[%_status%]" echo: _____________________________________________ echo: echo: [4] 自述文件 echo: [5] 下载IDM echo: _____________________________________________ echo: echo: [6] 退出 echo: ___________________________________________________ echo: call :_color2 %_White% " " %_Green% "在键盘中输入菜单选项 [1,2,3,4,5,6]" choice /C:1234567 /N set _erl=%errorlevel% if %_erl%==6 exit /b if %_erl%==5 start https://www.internetdownloadmanager.com & goto MainMenu if %_erl%==4 start https://github.com/WindowsAddict/IDM-Activation-Script & start https://massgrave.dev/idm-activation-script & goto MainMenu if %_erl%==3 call :_tog_Firewall&goto MainMenu if %_erl%==2 goto _reset if %_erl%==1 goto _activate goto :MainMenu ::======================================================================================================================================== :_tog_Firewall if %_status%==启用 ( netsh AdvFirewall Set AllProfiles State Off >nul ) else ( netsh AdvFirewall Set AllProfiles State On >nul ) exit /b ::======================================================================================================================================== :_reset if not defined Unattended ( mode 93, 32 %nul% %_psc% "&%_buf%" ) echo: set _error= reg query "HKCU\Software\DownloadManager" "/v" "Serial" %nul% && ( %idmcheck% && taskkill /f /im idman.exe ) if exist "!_appdata!\DMCache\settings.bak" del /s /f /q "!_appdata!\DMCache\settings.bak" set "_action=call :delete_key" call :reset echo: echo %line% echo: if not defined _error ( call :_color %Green% "IDM 激活 - 已成功在注册表中重置试用。" ) else ( call :_color %Red% "未能完全重置 IDM 激活 - 试用版。" ) goto done ::======================================================================================================================================== :_activate if not defined Unattended ( mode 93, 32 %nul% %_psc% "&%_buf%" ) echo: set _error= if not exist "!IDMan!" ( call :_color %Red% "IDM [Internet Download Manager] 未安装。" echo 你可以从以下网址下载 https://www.internetdownloadmanager.com/download.html goto done ) :: Internet check with internetdownloadmanager.com ping and port 80 test ping -n 1 internetdownloadmanager.com >nul || ( %_psc% "$t = New-Object Net.Sockets.TcpClient;try{$t.Connect("""internetdownloadmanager.com""", 80)}catch{};$t.Connected" | findstr /i true 1>nul ) if not [%errorlevel%]==[0] ( call :_color %Red% "无法连接 internetdownloadmanager.com, 正在中止..." goto done ) echo 互联网已连接。 %idmcheck% && taskkill /f /im idman.exe if exist "!_appdata!\DMCache\settings.bak" del /s /f /q "!_appdata!\DMCache\settings.bak" set "_action=call :delete_key" call :reset set "_action=call :count_key" call :register_IDM echo: if defined _derror call :f_reset & goto done set lockedkeys= set "_action=call :lock_key" echo 正在锁定注册表项... echo: call :action if not defined _error if [%lockedkeys%] GEQ [7] ( echo: echo %line% echo: call :_color %Green% "IDM已成功激活。" echo: call :_color %Gray% "如果屏幕出现无效序列号,请再次运行激活,之后就不会出现了。" goto done ) call :f_reset ::======================================================================================================================================== :done echo %line% echo: echo: if defined Unattended ( timeout /t 3 exit /b ) call :_color %_Yellow% "按任意键返回..." pause >nul goto MainMenu :done2 if defined Unattended ( timeout /t 3 exit /b ) echo 按任意键退出... pause >nul exit /b ::======================================================================================================================================== :f_reset echo: echo %line% echo: call :_color %Red% "发现错误,正在重置IDM激活..." set "_action=call :delete_key" call :reset echo: echo %line% echo: call :_color %Red% "无法激活IDM。" exit /b ::======================================================================================================================================== :reset set take_permission= call :delete_queue set take_permission=1 call :action call :add_key exit /b ::======================================================================================================================================== :_rcont reg add %reg% %nul% call :_add_key exit /b :register_IDM echo: echo 正在应用注册详细信息... echo: If not defined name set name=Tonec FZE set "reg=HKCU\SOFTWARE\DownloadManager /v FName /t REG_SZ /d "%name%"" & call :_rcont set "reg=HKCU\SOFTWARE\DownloadManager /v LName /t REG_SZ /d """ & call :_rcont set "reg=HKCU\SOFTWARE\DownloadManager /v Email /t REG_SZ /d "info@tonec.com"" & call :_rcont set "reg=HKCU\SOFTWARE\DownloadManager /v Serial /t REG_SZ /d "FOX6H-3KWH4-7TSIN-Q4US7"" & call :_rcont echo: echo 正在触发一些下载以创建某些注册表项,请稍候.... set "file=%_temp%\temp.png" set _fileexist= set _derror= %idmcheck% && taskkill /f /im idman.exe set link=https://www.internetdownloadmanager.com/images/idm_box_min.png call :download set link=https://www.internetdownloadmanager.com/register/IDMlib/images/idman_logos.png call :download :: it may take some time to reflect registry keys. timeout /t 3 >nul set foundkeys= call :action if [%foundkeys%] GEQ [7] goto _skip set link=https://www.internetdownloadmanager.com/pictures/idm_about.png call :download set link=https://www.internetdownloadmanager.com/languages/indian.png call :download timeout /t 3 >nul set foundkeys= call :action if not [%foundkeys%] GEQ [7] set _derror=1 :_skip echo: if not defined _derror ( echo 已成功创建所需的注册表项。 ) else ( if not defined _fileexist call :_color %Red% "无法使用IDM下载文件。" call :_color %Red% "无法创建所需的注册表项。" call :_color %Magenta% "重试 - 使用脚本选项禁用 Windows防火墙 - 阅读自述文件。" ) echo: %idmcheck% && taskkill /f /im idman.exe if exist "%file%" del /f /q "%file%" exit /b :download set /a attempt=0 if exist "%file%" del /f /q "%file%" start "" /B "!IDMan!" /n /d "%link%" /p "%_temp%" /f temp.png :check_file timeout /t 1 >nul set /a attempt+=1 if exist "%file%" set _fileexist=1&exit /b if %attempt% GEQ 20 exit /b goto :Check_file ::======================================================================================================================================== :delete_queue echo: echo 正在删除注册表项... echo: for %%# in ( ""HKCU\Software\DownloadManager" "/v" "FName"" ""HKCU\Software\DownloadManager" "/v" "LName"" ""HKCU\Software\DownloadManager" "/v" "Email"" ""HKCU\Software\DownloadManager" "/v" "Serial"" ""HKCU\Software\DownloadManager" "/v" "scansk"" ""HKCU\Software\DownloadManager" "/v" "tvfrdt"" ""HKCU\Software\DownloadManager" "/v" "radxcnt"" ""HKCU\Software\DownloadManager" "/v" "LstCheck"" ""HKCU\Software\DownloadManager" "/v" "ptrk_scdt"" ""HKCU\Software\DownloadManager" "/v" "LastCheckQU"" "%HKLM%" ) do for /f "tokens=* delims=" %%A in ("%%~#") do ( set "reg="%%~A"" ® query !reg! %nul% && call :delete_key ) exit /b ::======================================================================================================================================== :add_key echo: echo 正在添加注册表项... echo: set "reg="%HKLM%" /v "已启用高级驱动程序2"" reg add %reg% /t REG_DWORD /d "1" /f %nul% :_add_key if [%errorlevel%]==[0] ( set "reg=%reg:"=%" echo 已添加 - !reg! ) else ( set _error=1 set "reg=%reg:"=%" %_psc% write-host 'Failed' -fore 'white' -back 'DarkRed' -NoNewline&echo - !reg! ) exit /b ::======================================================================================================================================== :action set garbagekeys=0 if exist %regdata% del /f /q %regdata% %nul% reg query %CLSID% > %regdata% %nul% %_psc% "(gc %regdata%) -replace 'HKEY_CURRENT_USER', 'HKCU' | Out-File -encoding ASCII %regdata%" for /f %%a in (%regdata%) do ( for /f "tokens=%_tok% delims=\" %%# in ("%%a") do ( echo %%#|findstr /r "{.*-.*-.*-.*-.*}" >nul && (set "reg=%%a" & call :scan_key) ) ) if exist %regdata% del /f /q %regdata% %nul% exit /b ::======================================================================================================================================== :scan_key reg query %reg% 2>nul | findstr /i "LocalServer32 InProcServer32 InProcHandler32" >nul && exit /b reg query %reg% 2>nul | find /i "H" 1>nul || ( %_action% exit /b ) for /f "skip=2 tokens=*" %%a in ('reg query %reg% /ve 2^>nul') do echo %%a|findstr /r /e "[^0-9]" >nul || ( %_action% exit /b ) for /f "skip=2 tokens=3" %%a in ('reg query %reg%\Version /ve 2^>nul') do echo %%a|findstr /r "[^0-9]" >nul || ( %_action% exit /b ) for /f "skip=2 tokens=1" %%a in ('reg query %reg% 2^>nul') do echo %%a| findstr /i "MData Model scansk Therad" >nul && ( %_action% exit /b ) for /f "skip=2 tokens=*" %%a in ('reg query %reg% /ve 2^>nul') do echo %%a| find /i "+" >nul && ( %_action% exit /b ) exit/b ::======================================================================================================================================== :delete_key reg delete %reg% /f %nul% if not [%errorlevel%]==[0] if defined take_permission ( %nul% call :reg_own "%reg%" preserve S-1-1-0 reg delete %reg% /f %nul% ) if [%errorlevel%]==[0] ( set "reg=%reg:"=%" echo 已删除 - !reg! ) else ( set "reg=%reg:"=%" set _error=1 %_psc% write-host 'Failed' -fore 'white' -back 'DarkRed' -NoNewline & echo - !reg! ) if defined take_permission ( set /a garbagekeys+=1 if !garbagekeys! EQU 12 echo --- Do not worry, only empty and leftover registry keys are being deleted. ) exit /b ::======================================================================================================================================== :lock_key %nul% call :reg_own "%reg%" "" S-1-1-0 S-1-0-0 Deny "FullContro" reg delete %reg% /f %nul% if not [%errorlevel%]==[0] ( set "reg=%reg:"=%" echo 已锁定 - !reg! set /a lockedkeys+=1 ) else ( set _error=1 set "reg=%reg:"=%" %_psc% write-host 'Failed' -fore 'white' -back 'DarkRed' -NoNewline&echo - !reg! ) exit /b ::======================================================================================================================================== :count_key set /a foundkeys+=1 exit /b ::======================================================================================================================================== :: A lean and mean snippet to set registry ownership and permission recursively :: Written by @AveYo aka @BAU :: pastebin.com/XTPt0JSC :reg_own %_psc% $A='%~1','%~2','%~3','%~4','%~5','%~6';iex(([io.file]::ReadAllText('!_batp!')-split':Own1\:.*')[1])&exit/b:Own1: $D1=[uri].module.gettype('System.Diagnostics.Process')."GetM`ethods"(42) |where {$_.Name -eq 'SetPrivilege'} #`:no-ev-warn 'SeSecurityPrivilege','SeTakeOwnershipPrivilege','SeBackupPrivilege','SeRestorePrivilege'|foreach {$D1.Invoke($null, @("$_",2))} $path=$A[0]; $rk=$path-split'\\',2; $HK=gi -lit Registry::$($rk[0]) -fo; $s=$A[1]; $sps=[Security.Principal.SecurityIdentifier] $u=($A[2],'S-1-5-32-544')[!$A[2]];$o=($A[3],$u)[!$A[3]];$w=$u,$o |% {new-object $sps($_)}; $old=!$A[3];$own=!$old; $y=$s-eq'all' $rar=new-object Security.AccessControl.RegistryAccessRule( $w[0], ($A[5],'FullControl')[!$A[5]], 1, 0, ($A[4],'Allow')[!$A[4]] ) $x=$s-eq'none';function Own1($k){$t=$HK.OpenSubKey($k,2,'TakeOwnership');if($t){0,4|%{try{$o=$t.GetAccessControl($_)}catch{$old=0} };if($old){$own=1;$w[1]=$o.GetOwner($sps)};$o.SetOwner($w[0]);$t.SetAccessControl($o); $c=$HK.OpenSubKey($k,2,'ChangePermissions') $p=$c.GetAccessControl(2);if($y){$p.SetAccessRuleProtection(1,1)};$p.ResetAccessRule($rar);if($x){$p.RemoveAccessRuleAll($rar)} $c.SetAccessControl($p);if($own){$o.SetOwner($w[1]);$t.SetAccessControl($o)};if($s){$subkeys=$HK.OpenSubKey($k).GetSubKeyNames() foreach($n in $subkeys){Own1 "$k\$n"}}}};Own1 $rk[1];if($env:VO){get-acl Registry::$path|fl} #:Own1: lean & mean snippet by AveYo ::======================================================================================================================================== :_color if %_NCS% EQU 1 ( echo %esc%[%~1%~2%esc%[0m ) else ( call :batcol %~1 "%~2" ) exit /b :_color2 if %_NCS% EQU 1 ( echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m ) else ( call :batcol %~1 "%~2" %~3 "%~4" ) exit /b ::======================================= :: Colored text with pure batch method :: Thanks to @dbenham and @jeb :: https://stackoverflow.com/a/10407642 :: Powershell is not used here because its slow :batcol pushd %_coltemp% if not exist "'" (<nul >"'" set /p "=.") setlocal set "s=%~2" set "t=%~4" call :_batcol %1 s %3 t del /f /q "'" del /f /q "`.txt" popd exit /b :_batcol setlocal EnableDelayedExpansion set "s=!%~2!" set "t=!%~4!" for /f delims^=^ eol^= %%i in ("!s!") do ( if "!" equ "" setlocal DisableDelayedExpansion >`.txt (echo %%i\..\') findstr /a:%~1 /f:`.txt "." <nul set /p "=%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%" ) if "%~4"=="" echo(&exit /b setlocal EnableDelayedExpansion for /f delims^=^ eol^= %%i in ("!t!") do ( if "!" equ "" setlocal DisableDelayedExpansion >`.txt (echo %%i\..\') findstr /a:%~3 /f:`.txt "." <nul set /p "=%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%%_BS%" ) echo( exit /b ::======================================= :_colorprep if %winbuild% GEQ 10586 ( for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a" set "Red="41;97m"" set "Gray="100;97m"" set "Black="30m"" set "Green="42;97m"" set "Blue="44;97m"" set "Yellow="43;97m"" set "Magenta="45;97m"" set "_Red="40;91m"" set "_Green="40;92m"" set "_Blue="40;94m"" set "_White="40;37m"" set "_Yellow="40;93m"" exit /b ) if not defined _BS for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "_BS=%%A %%A" set "_coltemp=%SystemRoot%\Temp" set "Red="CF"" set "Gray="8F"" set "Black="00"" set "Green="2F"" set "Blue="1F"" set "Yellow="6F"" set "Magenta="5F"" set "_Red="0C"" set "_Green="0A"" set "_Blue="09"" set "_White="07"" set "_Yellow="0E"" exit /b ::========================================================================================================================================
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)