From cc486ebe93b106f0a4826eab4470405b221d65de Mon Sep 17 00:00:00 2001 From: lstprjct <88411318+lstprjct@users.noreply.github.com> Date: Sat, 17 Feb 2024 20:41:59 +0600 Subject: [PATCH] 1.2 The changelog for the software updates is as follows: - Version 1.2: Added back activation option with randomized registration details, recommended Freeze trial option due to issues. Also, implemented a script to disable quick-edit in CMD windows using Powershell. - Version 1.1: Removed activation option, replaced it with Freeze trial to address fake serial popups, and added code to relaunch script with conhost.exe. - Version 1.0: Added code to relaunch the script with conhost.exe, fixed an issue in getting the current user account SID. - Version 0.9: Fixed issues with script activation in non-admin user accounts, improved error handling, and added update checker code. - Version 0.8: Moved the project to Github, made minor bug fixes, and added information about deleting empty registry keys. --- IAS.cmd | 915 ++++++++++++++++++++++++++++++++++++++++++++++++++++ IAS_0.8.cmd | 889 -------------------------------------------------- 2 files changed, 915 insertions(+), 889 deletions(-) create mode 100644 IAS.cmd delete mode 100644 IAS_0.8.cmd diff --git a/IAS.cmd b/IAS.cmd new file mode 100644 index 0000000..7a18124 --- /dev/null +++ b/IAS.cmd @@ -0,0 +1,915 @@ +@set iasver=1.2 +@setlocal DisableDelayedExpansion +@echo off + + + +::============================================================================ +:: +:: IDM Activation Script (IAS) +:: +:: Homepages: https://github.com/lstprjct/IDM-Activation-Script +:: https://t.me/ModByPiash/5 +:: +:: Telegram: @Stripe_op +:: +::============================================================================ + + + +:: To activate, run the script with "/act" parameter or change 0 to 1 in below line +set _activate=0 + +:: To Freeze the 30 days trial period, run the script with "/frz" parameter or change 0 to 1 in below line +set _freeze=0 + +:: To reset the activation and trial, run the script with "/res" parameter or change 0 to 1 in below line +set _reset=0 + +:: If value is changed in above lines or parameter is used then script will run in unattended mode + +::======================================================================================================================================== + +:: 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%" +) + +:: 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 "blank=" +set "mas=https://github.com/lstprjct/IDM-Activation-Script/wiki/" + +:: Check if Null service is working, it's important for the batch script + +sc query Null | find /i "RUNNING" +if %errorlevel% NEQ 0 ( +echo: +echo Null service is not running, script may crash... +echo: +echo: +echo Help - %mas%IAS-Help#troubleshoot +echo: +echo: +ping 127.0.0.1 -n 10 +) +cls + +:: Check LF line ending + +pushd "%~dp0" +>nul findstr /v "$" "%~nx0" && ( +echo: +echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing. +echo: +ping 127.0.0.1 -n 6 >nul +popd +exit /b +) +popd + +::======================================================================================================================================== + +cls +color 07 +title IDM Activation Script %iasver% + +set _args= +set _elev= +set _unattended=0 + +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 _reset=1 +if /i "%%A"=="/frz" set _freeze=1 +if /i "%%A"=="/act" set _activate=1 +) +) + +for %%A in (%_activate% %_freeze% %_reset%) do (if "%%A"=="1" set _unattended=1) + +::======================================================================================================================================== + +set "nul1=1>nul" +set "nul2=2>nul" +set "nul6=2^>nul" +set "nul=>nul 2>&1" + +set psc=powershell.exe +set winbuild=1 +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 %nul2% | find /i "0x0" %nul1% && (set _NCS=0) + +if %_NCS% EQU 1 ( +for /F %%a in ('echo prompt $E ^| cmd') do set "esc=%%a" +set "Red="41;97m"" +set "Gray="100;97m"" +set "Green="42;97m"" +set "Blue="44;97m"" +set "_White="40;37m"" +set "_Green="40;92m"" +set "_Yellow="40;93m"" +) else ( +set "Red="Red" "white"" +set "Gray="Darkgray" "white"" +set "Green="DarkGreen" "white"" +set "Blue="Blue" "white"" +set "_White="Black" "Gray"" +set "_Green="Black" "Green"" +set "_Yellow="Black" "Yellow"" +) + +set "nceline=echo: &echo ==== ERROR ==== &echo:" +set "eline=echo: &call :_color %Red% "==== ERROR ====" &echo:" +set "line=___________________________________________________________________________________________________" +set "_buf={$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=34;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" + +::======================================================================================================================================== + +if %winbuild% LSS 7600 ( +%nceline% +echo Unsupported OS version Detected [%winbuild%]. +echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. +goto done2 +) + +for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" ( +%nceline% +echo Unable to find powershell.exe in the system. +goto done2 +) + +::======================================================================================================================================== + +:: Fix for the special characters limitation in path name + +set "_work=%~dp0" +if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" + +set "_batf=%~f0" +set "_batp=%_batf:'=''%" + +set _PSarg="""%~f0""" -el %_args% +set _PSarg=%_PSarg:'=''% + +set "_appdata=%appdata%" +set "_ttemp=%userprofile%\AppData\Local\Temp" + +setlocal EnableDelayedExpansion + +::======================================================================================================================================== + +echo "!_batf!" | find /i "!_ttemp!" %nul1% && ( +if /i not "!_work!"=="!_ttemp!" ( +%eline% +echo Script is launched from the temp folder, +echo Most likely you are running the script directly from the archive file. +echo: +echo Extract the archive file and launch the script from the extracted folder. +goto done2 +) +) + +::======================================================================================================================================== + +:: Check PowerShell + +REM :PowerShellTest: $ExecutionContext.SessionState.LanguageMode :PowerShellTest: + +%psc% "$f=[io.file]::ReadAllText('!_batp!') -split ':PowerShellTest:\s*';iex ($f[1])" | find /i "FullLanguage" %nul1% || ( +%eline% +%psc% $ExecutionContext.SessionState.LanguageMode +echo: +echo PowerShell is not working. Aborting... +echo If you have applied restrictions on Powershell then undo those changes. +echo: +echo Check this page for help. %mas%IAS-Help#troubleshoot +goto done2 +) + +::======================================================================================================================================== + +:: Elevate script as admin and pass arguments and preventing loop + +%nul1% fltmc || ( +if not defined _elev %psc% "start cmd.exe -arg '/c \"!_PSarg!\"' -verb runas" && exit /b +%eline% +echo This script requires admin privileges. +echo To do so, right click on this script and select 'Run as administrator'. +goto done2 +) + +::======================================================================================================================================== + +:: Disable QuickEdit and launch from conhost.exe to avoid Terminal app + +set quedit= +set terminal= + +if %_unattended%==1 ( +set quedit=1 +set terminal=1 +) + +for %%# in (%_args%) do (if /i "%%#"=="-qedit" set quedit=1) + +if %winbuild% LSS 10586 ( +reg query HKCU\Console /v QuickEdit %nul2% | find /i "0x0" %nul1% && set quedit=1 +) + +if %winbuild% GEQ 17763 ( +set "launchcmd=start conhost.exe %psc%" +) else ( +set "launchcmd=%psc%" +) + +set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" +set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" +set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" +set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" + +if defined quedit goto :skipQE +%launchcmd% "%d1% %d2% %d3% %d4% & cmd.exe '/c' '!_PSarg! -qedit'" &exit /b +:skipQE + +::======================================================================================================================================== + +cls +title IDM Activation Script %iasver% + +echo: +echo Initializing... + +:: Check WMI + +%psc% "Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" %nul2% | find /i "computersystem" %nul1% || ( +%eline% +%psc% "Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property CreationClassName" +echo: +echo WMI is not working. Aborting... +echo: +echo Check this page for help. %mas%IAS-Help#troubleshoot +goto done2 +) + +:: Check user account SID + +set _sid= +for /f "delims=" %%a in ('%psc% "([System.Security.Principal.NTAccount](Get-WmiObject -Class Win32_ComputerSystem).UserName).Translate([System.Security.Principal.SecurityIdentifier]).Value" %nul6%') do (set _sid=%%a) + +reg query HKU\%_sid%\Software %nul% || ( +for /f "delims=" %%a in ('%psc% "$explorerProc = Get-Process -Name explorer | Where-Object {$_.SessionId -eq (Get-Process -Id $pid).SessionId} | Select-Object -First 1; $sid = (gwmi -Query ('Select * From Win32_Process Where ProcessID=' + $explorerProc.Id)).GetOwnerSid().Sid; $sid" %nul6%') do (set _sid=%%a) +) + +reg query HKU\%_sid%\Software %nul% || ( +%eline% +echo: +echo [%_sid%] +echo User Account SID not found. Aborting... +echo: +echo Check this page for help. %mas%IAS-Help#troubleshoot +goto done2 +) + +::======================================================================================================================================== + +:: Check if the current user SID is syncing with the HKCU entries + +%nul% reg delete HKCU\IAS_TEST /f +%nul% reg delete HKU\%_sid%\IAS_TEST /f + +set HKCUsync=$null +%nul% reg add HKCU\IAS_TEST +%nul% reg query HKU\%_sid%\IAS_TEST && ( +set HKCUsync=1 +) + +%nul% reg delete HKCU\IAS_TEST /f +%nul% reg delete HKU\%_sid%\IAS_TEST /f + +:: Below code also works for ARM64 Windows 10 (including x64 bit emulation) + +for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b +if /i not "%arch%"=="x86" set arch=x64 + +if "%arch%"=="x86" ( +set "CLSID=HKCU\Software\Classes\CLSID" +set "CLSID2=HKU\%_sid%\Software\Classes\CLSID" +set "HKLM=HKLM\Software\Internet Download Manager" +) else ( +set "CLSID=HKCU\Software\Classes\Wow6432Node\CLSID" +set "CLSID2=HKU\%_sid%\Software\Classes\Wow6432Node\CLSID" +set "HKLM=HKLM\SOFTWARE\Wow6432Node\Internet Download Manager" +) + +for /f "tokens=2*" %%a in ('reg query "HKU\%_sid%\Software\DownloadManager" /v ExePath %nul6%') do call set "IDMan=%%b" + +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 not exist %SystemRoot%\Temp md %SystemRoot%\Temp +set "idmcheck=tasklist /fi "imagename eq idman.exe" | findstr /i "idman.exe" %nul1%" + +:: Check CLSID registry access + +%nul% reg add %CLSID2%\IAS_TEST +%nul% reg query %CLSID2%\IAS_TEST || ( +%eline% +echo Failed to write in %CLSID2% +echo: +echo Check this page for help. %mas%IAS-Help#troubleshoot +goto done2 +) + +%nul% reg delete %CLSID2%\IAS_TEST /f + +::======================================================================================================================================== + +if %_reset%==1 goto :_reset +if %_activate%==1 (set frz=0&goto :_activate) +if %_freeze%==1 (set frz=1&goto :_activate) + +:MainMenu + +cls +title IDM Activation Script %iasver% +if not defined terminal mode 75, 28 + +echo: +echo: +call :_color2 %_White% " " %_Green% "Create By Piash" +echo: ___________________________________________________ +echo: +echo: Telegram: @ModByPiash +echo: Github: https://github.com/lstprjct +echo: ___________________________________________________ +echo: +echo: [1] Activate +echo: [2] Freeze Trial +echo: [3] Reset Activation / Trial +echo: _____________________________________________ +echo: +echo: [4] Download IDM +echo: [5] Help +echo: [0] Exit +echo: ___________________________________________________ +echo: +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,0]" +choice /C:123450 /N +set _erl=%errorlevel% + +if %_erl%==6 exit /b +if %_erl%==5 start https://github.com/lstprjct/IDM-Activation-Script & goto MainMenu +if %_erl%==4 start https://www.internetdownloadmanager.com/download.html & goto MainMenu +if %_erl%==3 goto _reset +if %_erl%==2 (set frz=1&goto :_activate) +if %_erl%==1 (set frz=0&goto :_activate) +goto :MainMenu + +::======================================================================================================================================== + +:_reset + +cls +if not %HKCUsync%==1 ( +if not defined terminal mode 153, 35 +) else ( +if not defined terminal mode 113, 35 +) +if not defined terminal %psc% "&%_buf%" %nul% + +echo: +%idmcheck% && taskkill /f /im idman.exe + +set _time= +for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a + +echo: +echo Creating backup of CLSID registry keys in %SystemRoot%\Temp + +reg export %CLSID% "%SystemRoot%\Temp\_Backup_HKCU_CLSID_%_time%.reg" +if not %HKCUsync%==1 reg export %CLSID2% "%SystemRoot%\Temp\_Backup_HKU-%_sid%_CLSID_%_time%.reg" + +call :delete_queue +%psc% "$sid = '%_sid%'; $HKCUsync = %HKCUsync%; $lockKey = $null; $deleteKey = 1; $f=[io.file]::ReadAllText('!_batp!') -split ':regscan\:.*';iex ($f[1])" + +call :add_key + +echo: +echo %line% +echo: +call :_color %Green% "The IDM reset process has been completed." + +goto done + +:delete_queue + +echo: +echo Deleting IDM registry keys... +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 :del +) + +if not %HKCUsync%==1 for %%# in ( +""HKU\%_sid%\Software\DownloadManager" "/v" "FName"" +""HKU\%_sid%\Software\DownloadManager" "/v" "LName"" +""HKU\%_sid%\Software\DownloadManager" "/v" "Email"" +""HKU\%_sid%\Software\DownloadManager" "/v" "Serial"" +""HKU\%_sid%\Software\DownloadManager" "/v" "scansk"" +""HKU\%_sid%\Software\DownloadManager" "/v" "tvfrdt"" +""HKU\%_sid%\Software\DownloadManager" "/v" "radxcnt"" +""HKU\%_sid%\Software\DownloadManager" "/v" "LstCheck"" +""HKU\%_sid%\Software\DownloadManager" "/v" "ptrk_scdt"" +""HKU\%_sid%\Software\DownloadManager" "/v" "LastCheckQU"" +) do for /f "tokens=* delims=" %%A in ("%%~#") do ( +set "reg="%%~A"" ® query !reg! %nul% && call :del +) + +exit /b + +:del + +reg delete %reg% /f %nul% + +if "%errorlevel%"=="0" ( +set "reg=%reg:"=%" +echo Deleted - !reg! +) else ( +set "reg=%reg:"=%" +call :_color2 %Red% "Failed - !reg!" +) + +exit /b + +::======================================================================================================================================== + +:_activate + +cls +if not %HKCUsync%==1 ( +if not defined terminal mode 153, 35 +) else ( +if not defined terminal mode 113, 35 +) +if not defined terminal %psc% "&%_buf%" %nul% + +if %frz%==0 if %_unattended%==0 ( +echo: +echo %line% +echo: +echo Activation is not working for some users and IDM may show fake serial nag screen. +echo: +call :_color2 %_White% " " %_Green% "Its recommended to use Freeze Trial option instead." +echo %line% +echo: +choice /C:19 /N /M "> [1] Go Back [9] Activate : " +if !errorlevel!==1 goto :MainMenu +cls +) + +echo: +if not exist "%IDMan%" ( +call :_color %Red% "IDM [Internet Download Manager] is not Installed." +echo You can download it from https://www.internetdownloadmanager.com/download.html +goto done +) + +:: Internet check with internetdownloadmanager.com ping and port 80 test + +set _int= +for /f "delims=[] tokens=2" %%# in ('ping -n 1 internetdownloadmanager.com') do (if not [%%#]==[] set _int=1) + +if not defined _int ( +%psc% "$t = New-Object Net.Sockets.TcpClient;try{$t.Connect("""internetdownloadmanager.com""", 80)}catch{};$t.Connected" | findstr /i "true" %nul1% || ( +call :_color %Red% "Unable to connect internetdownloadmanager.com, aborting..." +goto done +) +call :_color %Gray% "Ping command failed for internetdownloadmanager.com" +echo: +) + +for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul') do set "regwinos=%%b" +for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set "regarch=%%b" +for /f "tokens=6-7 delims=[]. " %%i in ('ver') do if "%%j"=="" (set fullbuild=%%i) else (set fullbuild=%%i.%%j) +for /f "tokens=2*" %%a in ('reg query "HKU\%_sid%\Software\DownloadManager" /v idmvers %nul6%') do set "IDMver=%%b" + +echo Checking Info - [%regwinos% ^| %fullbuild% ^| %regarch% ^| IDM: %IDMver%] + +%idmcheck% && (echo: & taskkill /f /im idman.exe) + +set _time= +for /f %%a in ('%psc% "(Get-Date).ToString('yyyyMMdd-HHmmssfff')"') do set _time=%%a + +echo: +echo Creating backup of CLSID registry keys in %SystemRoot%\Temp + +reg export %CLSID% "%SystemRoot%\Temp\_Backup_HKCU_CLSID_%_time%.reg" +if not %HKCUsync%==1 reg export %CLSID2% "%SystemRoot%\Temp\_Backup_HKU-%_sid%_CLSID_%_time%.reg" + +call :delete_queue +call :add_key + +%psc% "$sid = '%_sid%'; $HKCUsync = %HKCUsync%; $lockKey = 1; $deleteKey = $null; $toggle = 1; $f=[io.file]::ReadAllText('!_batp!') -split ':regscan\:.*';iex ($f[1])" + +if %frz%==0 call :register_IDM + +call :download_files +if not defined _fileexist ( +%eline% +echo Error: Unable to download files with IDM. +echo: +echo Help: %mas%IAS-Help#troubleshoot +goto :done +) + +%psc% "$sid = '%_sid%'; $HKCUsync = %HKCUsync%; $lockKey = 1; $deleteKey = $null; $f=[io.file]::ReadAllText('!_batp!') -split ':regscan\:.*';iex ($f[1])" + +echo: +echo %line% +echo: +if %frz%==0 ( +call :_color %Green% "The IDM Activation process has been completed." +echo: +call :_color %Gray% "If the fake serial screen appears, use the Freeze Trial option instead." +) else ( +call :_color %Green% "The IDM 30 days trial period is successfully freezed for Lifetime." +echo: +call :_color %Gray% "If IDM is showing a popup to register, reinstall IDM." +) + +::======================================================================================================================================== + +:done + +echo %line% +echo: +echo: +if %_unattended%==1 timeout /t 2 & exit /b + +if defined terminal ( +call :_color %_Yellow% "Press 0 key to return..." +choice /c 0 /n +) else ( +call :_color %_Yellow% "Press any key to return..." +pause %nul1% +) +goto MainMenu + +:done2 + +if %_unattended%==1 timeout /t 2 & exit /b + +if defined terminal ( +echo Press 0 key to exit... +choice /c 0 /n +) else ( +echo Press any key to exit... +pause %nul1% +) +exit /b + +::======================================================================================================================================== + +:_rcont + +reg add %reg% %nul% +call :add +exit /b + +:register_IDM + +echo: +echo Applying registration details... +echo: + +set /a fname = %random% %% 9999 + 1000 +set /a lname = %random% %% 9999 + 1000 +set email=%fname%.%lname%@tonec.com + +for /f "delims=" %%a in ('%psc% "$key = -join ((Get-Random -Count 20 -InputObject ([char[]]('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'))));$key = ($key.Substring(0, 5) + '-' + $key.Substring(5, 5) + '-' + $key.Substring(10, 5) + '-' + $key.Substring(15, 5) + $key.Substring(20));Write-Output $key" %nul6%') do (set key=%%a) + +set "reg=HKCU\SOFTWARE\DownloadManager /v FName /t REG_SZ /d "%fname%"" & call :_rcont +set "reg=HKCU\SOFTWARE\DownloadManager /v LName /t REG_SZ /d "%lname%"" & call :_rcont +set "reg=HKCU\SOFTWARE\DownloadManager /v Email /t REG_SZ /d "%email%"" & call :_rcont +set "reg=HKCU\SOFTWARE\DownloadManager /v Serial /t REG_SZ /d "%key%"" & call :_rcont + +if not %HKCUsync%==1 ( +set "reg=HKU\%_sid%\SOFTWARE\DownloadManager /v FName /t REG_SZ /d "%fname%"" & call :_rcont +set "reg=HKU\%_sid%\SOFTWARE\DownloadManager /v LName /t REG_SZ /d "%lname%"" & call :_rcont +set "reg=HKU\%_sid%\SOFTWARE\DownloadManager /v Email /t REG_SZ /d "%email%"" & call :_rcont +set "reg=HKU\%_sid%\SOFTWARE\DownloadManager /v Serial /t REG_SZ /d "%key%"" & call :_rcont +) +exit /b + +:download_files + +echo: +echo Triggering a few downloads to create certain registry keys, please wait... +echo: + +set "file=%SystemRoot%\Temp\temp.png" +set _fileexist= + +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 +set link=https://www.internetdownloadmanager.com/pictures/idm_about.png +call :download + +echo: +timeout /t 3 %nul1% +%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 "%SystemRoot%\Temp" /f temp.png + +:check_file + +timeout /t 1 %nul1% +set /a attempt+=1 +if exist "%file%" set _fileexist=1&exit /b +if %attempt% GEQ 20 exit /b +goto :Check_file + +::======================================================================================================================================== + +:add_key + +echo: +echo Adding registry key... +echo: + +set "reg="%HKLM%" /v "AdvIntDriverEnabled2"" + +reg add %reg% /t REG_DWORD /d "1" /f %nul% + +:add + +if "%errorlevel%"=="0" ( +set "reg=%reg:"=%" +echo Added - !reg! +) else ( +set "reg=%reg:"=%" +call :_color2 %Red% "Failed - !reg!" +) +exit /b + +::======================================================================================================================================== + +:regscan: +$finalValues = @() + +$arch = (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment').PROCESSOR_ARCHITECTURE +if ($arch -eq "x86") { + $regPaths = @("HKCU:\Software\Classes\CLSID", "Registry::HKEY_USERS\$sid\Software\Classes\CLSID") +} else { + $regPaths = @("HKCU:\Software\Classes\WOW6432Node\CLSID", "Registry::HKEY_USERS\$sid\Software\Classes\Wow6432Node\CLSID") +} + +foreach ($regPath in $regPaths) { + if (($regPath -match "HKEY_USERS") -and ($HKCUsync -ne $null)) { + continue + } + + Write-Host + Write-Host "Searching IDM CLSID Registry Keys in $regPath" + Write-Host + + $subKeys = Get-ChildItem -Path $regPath -ErrorAction SilentlyContinue -ErrorVariable lockedKeys | Where-Object { $_.PSChildName -match '^\{[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}\}$' } + + foreach ($lockedKey in $lockedKeys) { + $leafValue = Split-Path -Path $lockedKey.TargetObject -Leaf + $finalValues += $leafValue + Write-Output "$leafValue - Found Locked Key" + } + + if ($subKeys -eq $null) { + continue + } + + $subKeysToExclude = "LocalServer32", "InProcServer32", "InProcHandler32" + + $filteredKeys = $subKeys | Where-Object { !($_.GetSubKeyNames() | Where-Object { $subKeysToExclude -contains $_ }) } + + foreach ($key in $filteredKeys) { + $fullPath = $key.PSPath + $keyValues = Get-ItemProperty -Path $fullPath -ErrorAction SilentlyContinue + $defaultValue = $keyValues.PSObject.Properties | Where-Object { $_.Name -eq '(default)' } | Select-Object -ExpandProperty Value + + if (($defaultValue -match "^\d+$") -and ($key.SubKeyCount -eq 0)) { + $finalValues += $($key.PSChildName) + Write-Output "$($key.PSChildName) - Found Digit In Default and No Subkeys" + continue + } + if (($defaultValue -match "\+|=") -and ($key.SubKeyCount -eq 0)) { + $finalValues += $($key.PSChildName) + Write-Output "$($key.PSChildName) - Found + or = In Default and No Subkeys" + continue + } + $versionValue = Get-ItemProperty -Path "$fullPath\Version" -ErrorAction SilentlyContinue | Select-Object -ExpandProperty '(default)' -ErrorAction SilentlyContinue + if (($versionValue -match "^\d+$") -and ($key.SubKeyCount -eq 1)) { + $finalValues += $($key.PSChildName) + Write-Output "$($key.PSChildName) - Found Digit In \Version and No Other Subkeys" + continue + } + $keyValues.PSObject.Properties | ForEach-Object { + if ($_.Name -match "MData|Model|scansk|Therad") { + $finalValues += $($key.PSChildName) + Write-Output "$($key.PSChildName) - Found MData Model scansk Therad" + continue + } + } + if (($key.ValueCount -eq 0) -and ($key.SubKeyCount -eq 0)) { + $finalValues += $($key.PSChildName) + Write-Output "$($key.PSChildName) - Found Empty Key" + continue + } + } +} + +$finalValues = @($finalValues | Select-Object -Unique) + +if ($finalValues -ne $null) { + Write-Host + if ($lockKey -ne $null) { + Write-Host "Locking IDM CLSID Registry Keys..." + } + if ($deleteKey -ne $null) { + Write-Host "Deleting IDM CLSID Registry Keys..." + } + Write-Host +} else { + Write-Host "IDM CLSID Registry Keys are not found." + Exit +} + +if (($finalValues.Count -gt 20) -and ($toggle -ne $null)) { + $lockKey = $null + $deleteKey = 1 + Write-Host "The IDM keys count is more than 20. Deleting them now instead of locking..." + Write-Host +} + +function Take-Permissions { + param($rootKey, $regKey) + $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1) + $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False) + $TypeBuilder = $ModuleBuilder.DefineType(0) + + $TypeBuilder.DefinePInvokeMethod('RtlAdjustPrivilege', 'ntdll.dll', 'Public, Static', 1, [int], @([int], [bool], [bool], [bool].MakeByRefType()), 1, 3) | Out-Null + 9,17,18 | ForEach-Object { $TypeBuilder.CreateType()::RtlAdjustPrivilege($_, $true, $false, [ref]$false) | Out-Null } + + $SID = New-Object System.Security.Principal.SecurityIdentifier('S-1-5-32-544') + $IDN = ($SID.Translate([System.Security.Principal.NTAccount])).Value + $Admin = New-Object System.Security.Principal.NTAccount($IDN) + + $everyone = New-Object System.Security.Principal.SecurityIdentifier('S-1-1-0') + $none = New-Object System.Security.Principal.SecurityIdentifier('S-1-0-0') + + $key = [Microsoft.Win32.Registry]::$rootKey.OpenSubKey($regkey, 'ReadWriteSubTree', 'TakeOwnership') + + $acl = New-Object System.Security.AccessControl.RegistrySecurity + $acl.SetOwner($Admin) + $key.SetAccessControl($acl) + + $key = $key.OpenSubKey('', 'ReadWriteSubTree', 'ChangePermissions') + $rule = New-Object System.Security.AccessControl.RegistryAccessRule($everyone, 'FullControl', 'ContainerInherit', 'None', 'Allow') + $acl.ResetAccessRule($rule) + $key.SetAccessControl($acl) + + if ($lockKey -ne $null) { + $acl = New-Object System.Security.AccessControl.RegistrySecurity + $acl.SetOwner($none) + $key.SetAccessControl($acl) + + $key = $key.OpenSubKey('', 'ReadWriteSubTree', 'ChangePermissions') + $rule = New-Object System.Security.AccessControl.RegistryAccessRule($everyone, 'FullControl', 'Deny') + $acl.ResetAccessRule($rule) + $key.SetAccessControl($acl) + } +} + +foreach ($regPath in $regPaths) { + if (($regPath -match "HKEY_USERS") -and ($HKCUsync -ne $null)) { + continue + } + foreach ($finalValue in $finalValues) { + $fullPath = Join-Path -Path $regPath -ChildPath $finalValue + if ($fullPath -match 'HKCU:') { + $rootKey = 'CurrentUser' + } else { + $rootKey = 'Users' + } + + $position = $fullPath.IndexOf("\") + $regKey = $fullPath.Substring($position + 1) + + if ($lockKey -ne $null) { + if (-not (Test-Path -Path $fullPath -ErrorAction SilentlyContinue)) { New-Item -Path $fullPath -Force -ErrorAction SilentlyContinue | Out-Null } + Take-Permissions $rootKey $regKey + try { + Remove-Item -Path $fullPath -Force -Recurse -ErrorAction Stop + Write-Host -back 'DarkRed' -fore 'white' "Failed - $fullPath" + } + catch { + Write-Host "Locked - $fullPath" + } + } + + if ($deleteKey -ne $null) { + if (Test-Path -Path $fullPath) { + Remove-Item -Path $fullPath -Force -Recurse -ErrorAction SilentlyContinue + if (Test-Path -Path $fullPath) { + Take-Permissions $rootKey $regKey + try { + Remove-Item -Path $fullPath -Force -Recurse -ErrorAction Stop + Write-Host "Deleted - $fullPath" + } + catch { + Write-Host -back 'DarkRed' -fore 'white' "Failed - $fullPath" + } + } + else { + Write-Host "Deleted - $fullPath" + } + } + } + } +} +:regscan: + +::======================================================================================================================================== + +:_color + +if %_NCS% EQU 1 ( +echo %esc%[%~1%~2%esc%[0m +) else ( +%psc% write-host -back '%1' -fore '%2' '%3' +) +exit /b + +:_color2 + +if %_NCS% EQU 1 ( +echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m +) else ( +%psc% write-host -back '%1' -fore '%2' '%3' -NoNewline; write-host -back '%4' -fore '%5' '%6' +) +exit /b + +::======================================================================================================================================== +:: Leave empty line below diff --git a/IAS_0.8.cmd b/IAS_0.8.cmd deleted file mode 100644 index e440b91..0000000 --- a/IAS_0.8.cmd +++ /dev/null @@ -1,889 +0,0 @@ -@setlocal DisableDelayedExpansion -@echo off - -:: Add custom name in IDM license info, prefer to write it in English and/or numeric in below line after = sign, -set name= - - - - -::======================================================================================================================================== - -:: 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 - -if exist %SystemRoot%\Sysnative\cmd.exe ( -set "_cmdf=%~f0" -setlocal EnableDelayedExpansion -start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %*" -exit /b -) - -:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows - -if exist %SystemRoot%\Windows\SyChpe32\kernel32.dll if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 ( -set "_cmdf=%~f0" -setlocal EnableDelayedExpansion -start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %*" -exit /b -) - -:: Set Path variable, it helps if it is misconfigured in the system - -set "SysPath=%SystemRoot%\System32" -set "Path=%SysPath%;%SystemRoot%;%SysPath%\Wbem;%SysPath%\WindowsPowerShell\v1.0\" - -::======================================================================================================================================== - -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&set activate=&set reset=1 -if /i "%%A"=="/act" set Unattended=1&set activate=1&set reset= -if /i "%%A"=="/s" set Unattended=1&set Silent=1 -) -) - -::======================================================================================================================================== - -set "nul=>nul 2>&1" -set "_psc=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -set winbuild=1 -for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G -call :_colorprep -set "nceline=echo: &echo ==== ERROR ==== &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 Powershell is not installed in the system. -echo Aborting... -goto done2 -) - -if %winbuild% LSS 7600 ( -%nceline% -echo Unsupported OS version Detected. -echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. -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 -:: Thanks to @abbodi1406 for the powershell method and solving special characters issue in file path name. - -%nul% reg query HKU\S-1-5-19 || ( -if not defined _elev %nul% %_psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b -%nceline% -echo This script require administrator privileges. -echo To do so, right click on this script and select 'Run as administrator'. -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 -chcp 65001 -cls -title IDM Activation Script -mode 65, 25 - -:: 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=Enabled -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: ▐░░◌░▄▀██▄█░░░▌ IDM Activation Script -echo: ▐░░░▀████▀▄░░░▌ ◇────────────────────◇ -echo: ═▀▄▄▄▄▄▄▄▄▄▄▄▀═ -echo: -call :_color2 %_White% " " %_Green% " Create By Piash" -echo: _____________________________________________ -echo: -echo: [1] Activate IDM -echo: [2] Reset IDM Activation / Trial in Registry -echo: _____________________________________________ -echo: -call :_color2 %_White% " [3] Toggle Windows Firewall " %_col% "[%_status%]" -echo: _____________________________________________ -echo: -echo: [4] ReadMe -echo: [5] Homepage -echo: [6] Exit -echo: ___________________________________________________ -echo: -call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard [1,2,3,4,5,6]" -choice /C:123456 /N -set _erl=%errorlevel% - -if %_erl%==5 exit /b -if %_erl%==4 goto homepage -if %_erl%==3 call :_tog_Firewall&goto MainMenu -if %_erl%==2 goto _reset -if %_erl%==1 goto _activate -goto :MainMenu - -::======================================================================================================================================== - -:_tog_Firewall - -if %_status%==Enabled ( -netsh AdvFirewall Set AllProfiles State Off >nul -) else ( -netsh AdvFirewall Set AllProfiles State On >nul -) -exit /b - -::======================================================================================================================================== - -:readme - -set "_ReadMe=%SystemRoot%\Temp\ReadMe.txt" -if exist "%_ReadMe%" del /f /q "%_ReadMe%" %nul% -call :export txt "%_ReadMe%" -start notepad "%_ReadMe%" -timeout /t 2 %nul% -del /f /q "%_ReadMe%" -exit /b - - -:: Extract the text from batch script without character and file encoding issue -:: Thanks to @abbodi1406 - -:export - -%nul% %_psc% "$f=[io.file]::ReadAllText('!_batp!') -split \":%~1\:.*`r`n\"; [io.file]::WriteAllText('%~2',$f[1].Trim(),[System.Text.Encoding]::ASCII);" -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 Activation - Trial is successfully reset in the registry." -) else ( -call :_color %Red% "Failed to completely reset IDM Activation - Trial." -) - -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] is not Installed." -echo You can download it from 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% "Unable to connect internetdownloadmanager.com, aborting..." -goto done -) - -echo Internet is connected. - -%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 Locking registry keys... -echo: -call :action - -if not defined _error if [%lockedkeys%] GEQ [7] ( -echo: -echo %line% -echo: -call :_color %Green% "IDM is successfully activated." -echo: -call :_color %Gray% "If fake serial screen appears, run activation option again, after that it wont appear." -goto done -) - -call :f_reset - -::======================================================================================================================================== - -:done - -echo %line% -echo: -echo: -if defined Unattended ( -timeout /t 3 -exit /b -) - -call :_color %_Yellow% "Press any key to return..." -pause >nul -goto MainMenu - -:done2 - -if defined Unattended ( -timeout /t 3 -exit /b -) - -echo Press any key to exit... -pause >nul -exit /b - -::======================================================================================================================================== - -:homepage - -cls -echo: -echo: -echo Going Home... -echo: -echo: -timeout /t 3 - -start https://github.com/lstprjct/IDM-Activation-Script -goto MainMenu - -::======================================================================================================================================== - -:f_reset - -echo: -echo %line% -echo: -call :_color %Red% "Error found, resetting IDM activation..." -set "_action=call :delete_key" -call :reset -echo: -echo %line% -echo: -call :_color %Red% "Failed to activate 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: -set /p name="What is the name to be registered?" - -echo: -echo Applying registration details... -echo: - -If not defined name set name=Piash - -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 Triggering a few downloads to create certain registry keys, please wait... - -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 Required registry keys were created successfully. -) else ( -if not defined _fileexist call :_color %Red% "Unable to download files with IDM." -call :_color %Red% "Failed to create required registry keys." -call :_color %Magenta% "Try again - disable Windows firewall with script options - check Read Me." -) - -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 Deleting registry keys... -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 Adding registry key... -echo: - -set "reg="%HKLM%" /v "AdvIntDriverEnabled2"" - -reg add %reg% /t REG_DWORD /d "1" /f %nul% - -:_add_key - -if [%errorlevel%]==[0] ( -set "reg=%reg:"=%" -echo Added - !reg! -) else ( -set _error=1 -set "reg=%reg:"=%" -%_psc% write-host 'Failed' -fore 'white' -back 'DarkRed' -NoNewline&echo - !reg! -) -exit /b - -::======================================================================================================================================== - -:action - -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 Deleted - !reg! -) else ( -set "reg=%reg:"=%" -set _error=1 -%_psc% write-host 'Failed' -fore 'white' -back 'DarkRed' -NoNewline & echo - !reg! -) - -exit /b - -::======================================================================================================================================== - -:lock_key - -%nul% call :reg_own "%reg%" "" S-1-1-0 S-1-0-0 Deny "FullControl" - -reg delete %reg% /f %nul% - -if not [%errorlevel%]==[0] ( -set "reg=%reg:"=%" -echo Locked - !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 %winbuild% GEQ 10586 ( -echo %esc%[%~1%~2%esc%[0m -) else ( -call :batcol %~1 "%~2" -) -exit /b - -:_color2 - -if %winbuild% GEQ 10586 ( -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 "'" ("'" 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 "." - `.txt (echo %%i\..\') - findstr /a:%~3 /f:`.txt "." -