fork download
  1. @echo off
  2. SetLocal EnableExtensions EnabledelayedExpansion
  3. mode con cols=150 lines=40
  4.  
  5. title WinLock Kill Utility ver. 0.2 alpha
  6.  
  7. Call :GetSystemVersion "OSVer" "Core" "Build"
  8. Echo Your operating system: %OSVer% %Core% %Build%
  9.  
  10. Call :CheckPrivileges
  11.  
  12. ::Stady 1
  13. ::Сравнение с эталоном и исправление неверных записей в системном реестре
  14. ::Stady 1.1
  15. set param1.key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  16. set param1.name=shell
  17. set param1.value=Explorer.exe
  18. set param1.valueType=REG_SZ
  19.  
  20. Call :CheckNReplace_RegValue "%param1.key%" "%param1.name%" "%param1.value%" "%param1.valueType%"
  21.  
  22. ::Stady 1.2
  23. set param2.key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  24. set param2.name=userinit
  25. set param2.value=C:\WINDOWS\system32\userinit.exe,
  26. set param2.valueType=REG_SZ
  27.  
  28. Call :CheckNReplace_RegValue "%param2.key%" "%param2.name%" "%param2.value%" "%param2.valueType%"
  29.  
  30. ::Stady 1.3
  31. set param3.key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  32. set param3.name=UIHost
  33. set param3.value=logonui.exe
  34. set param3.valueType=REG_EXPAND_SZ
  35.  
  36. if "%OSVer%"==Windows 2000 Set Task_XP=true
  37. if "%OSVer%"==Windows XP Set Task_XP=true
  38. if "%OSVer%"==Windows 2003 Set Task_XP=true
  39.  
  40. if defined Task_XP (
  41. if "%OSVer%"==Windows 2003 set SpecialFlag=true
  42. rem //TODO: Сделать, чтобы тип параметра REG_SZ для этой системы при чтении являлся нормой
  43. Call :CheckNReplace_RegValue "%param3.key%" "%param3.name%" "%param3.value%" "%param3.valueType%"
  44. )
  45.  
  46. ::Stady 2.1
  47. ::Сканирование реестра на схожие значения ключей и удаление с подтверждением
  48.  
  49. ::Stady 2.2
  50. ::Сканирование системного диска на приложения, соответствующие фейковым значениям ключей и удаление с подтверждением
  51.  
  52. ::Stady 3
  53. ::Проверка целостности некоторых системных файлов и их замена в случае обнаружения проблем
  54. echo.
  55. echo Scanning for system files integrity
  56. sfc /Scanfile="%windir%\system32\userinit.exe"
  57. sfc /Scanfile="%windir%\explorer.exe"
  58. if defined Task_XP sfc /Scanfile="%windir%\system32\logonui.exe"
  59. echo.
  60. pause
  61. goto :eof
  62.  
  63. :CheckNReplace_RegValue
  64. :: %1.вх-Ключ реестра ... например: HKCU\Console
  65. :: %2.вх-Имя параметра ... например: FaceName
  66. :: %3.вх-Правильное значение параметра ... например: Lucida Console
  67. :: %4.вх-Тип параметра. Если задано ключевое слово "default", будет использован тип, считанный с реестра
  68. SetLocal
  69. Echo.
  70. call :Reg_Read "%~1" "%~2" "_value" "_value.type"
  71. if %errorlevel% neq 0 Exit /B
  72. ::Проверяем соответствие значения
  73. if /i "%_value%" neq "%~3" (
  74. echo DAMAGED = %_value% in %~1 "%~2"
  75. set _needReplace=true
  76. ) else (
  77. echo Okay - %~1 "%~2"
  78. )
  79. ::Проверяем соответствие типа параметра
  80. if /i "%~4" neq "default" (
  81. if /i "%_value.type%" neq "%~4" (
  82. echo WRONG type = %_value.type% - %~1 "%~2"
  83. set _needReplace=true
  84. )
  85. set _value.trueType=%~4
  86. ) else set _value.trueType=%_value.type%
  87. ::Переписываем ключ, сделав бекап
  88. if Defined _needReplace (
  89. Echo.
  90. Echo ===^> ReWriting...
  91. Echo Starting Backup to %~dp0
  92. rem // TODO: Здесь будет бекап
  93. Call :Reg_Write "%~1" "%~2" "%_value.trueType%" "%~3"
  94. if !errorlevel!==0 echo New Value was set: %~3
  95. )
  96. EndLocal
  97. Exit /B
  98.  
  99. :Reg_Read
  100. :: %1-вх.Ключ
  101. :: %2-вх.Имя параметра
  102. :: %3-исх.Переменная для хранения значения
  103. :: %4-исх.(опционально)-Переменная для хранения типа параметра
  104. Reg.exe query "%~1" /v "%~2" 1>nul
  105. if %errorlevel% neq 0 (
  106. echo Error Code %errorlevel%: Reg_Read %~1 "%~2"
  107. set %~3=& if "%~4" neq "" set %~4=
  108. Exit /B %errorlevel%
  109. )
  110. For /f "tokens=2*" %%a In ('Reg.exe query "%~1" /v "%~2"^|Find "%~2"') do set "%~3=%%~b"& if "%~4" neq "" set "%~4=%%~a"
  111. Exit /B 0
  112.  
  113. :Reg_Write
  114. :: %1-вх.Ключ
  115. :: %2-вх.Имя параметра
  116. :: %3-вх.Тип параметра { REG_SZ, REG_BINARY, REG_DWORD, REG_QWORD, REG_MULTI_SZ, REG_EXPAND_SZ }
  117. :: %4-вх.Значение
  118. reg.exe add "%~1" /v "%~2" /t "%~3" /d "%~4" /f
  119. (if %errorlevel%==0 (Exit /B 0) else (echo Error Code %errorlevel%: Reg_Write %~1 "%~2"& Exit /B %errorlevel%))
  120.  
  121. :GetSystemVersion
  122. :: Определить версию ОС
  123. :: %1-исх.Переменная для хранения названия ОС
  124. :: %2-исх.Переменная для хранения разрядности ОС
  125. :: %3-исх.Переменная для хранения версии сборки ОС
  126. If /i "%PROCESSOR_ARCHITECTURE%"=="x86" (set %~2=x32) else (set %~2=x64)
  127. For /F "delims=" %%a in ('ver') do set _ver=%%a
  128. Set _ver="%_ver: =" "%"
  129. For %%a in (%_ver%) do set _ver=%%~a
  130. for /F "delims=]" %%a in ("%_ver%") do set %~3=%%a
  131. set _ver=%_ver:~0,3%
  132. SET %~1=Unknown
  133. if "%_ver%"=="5.0" SET %~1=Windows 2000
  134. if "%_ver%"=="5.1" SET %~1=Windows XP
  135. if "%_ver%"=="5.2" SET %~1=Windows 2003
  136. if "%_ver%"=="6.0" (
  137. Reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"|Find /i "Vista"&&(
  138. SET %~1=Windows Vista) || (SET %~1=Windows 2008)
  139. )
  140. if "%_ver%"=="6.1" SET %~1=Windows 7
  141. if "%_ver%"=="6.2" SET %~1=Windows 8
  142. set _ver=
  143. Exit /B
  144.  
  145. :CheckPrivileges
  146. :: Проверка, запущена ли утилита с повышенными правами
  147. sfc /? |>nul find /i "/scannow"&& set errorlevel=0
  148. if %errorlevel% neq 0 (
  149. echo.
  150. echo You need elevated privileges in order to run all recover actions properly.
  151. set /p "ch=Would you like to restart this utility now? (Y/N) "
  152. if /i "!ch!"=="N" (Exit /B) else (
  153. Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs"
  154. cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"
  155. Exit
  156. )
  157. ) else (if exist "%~dp0Elevating.vbs" del "%~dp0Elevating.vbs")
  158. Exit /B
Runtime error #stdin #stdout #stderr 0.03s 5312KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
prog.sh: line 1: @echo: command not found
prog.sh: line 2: SetLocal: command not found
prog.sh: line 3: mode: command not found
prog.sh: line 5: title: command not found
prog.sh: line 7: Call: command not found
prog.sh: line 8: Echo: command not found
prog.sh: line 10: Call: command not found
prog.sh: line 12: ::Stady: command not found
prog.sh: line 13: ::Сравнение: command not found
prog.sh: line 14: ::Stady: command not found
prog.sh: line 20: Call: command not found
prog.sh: line 22: ::Stady: command not found
prog.sh: line 28: Call: command not found
prog.sh: line 30: ::Stady: command not found
prog.sh: line 40: syntax error near unexpected token `('
prog.sh: line 40: `if defined Task_XP ('