Advertisement
aveyo

windows_drivers_update_toggle

Mar 28th, 2018 (edited)
8,622
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.80 KB | None | 0 0
  1. @(set '(=)||' <# lean and mean cmd / ps1 hybrid, can paste into powershell console #> @'
  2.  
  3. @echo off & title WINDOWS DRIVERS UPDATE TOGGLE
  4.  
  5. ::# elevate with native shell by AveYo
  6. >nul reg add hkcu\software\classes\.Admin\shell\runas\command /f /ve /d "cmd /x /d /r set \"f0=%%2\"& call \"%%2\" %%3"& set _= %*
  7. >nul fltmc|| if "%f0%" neq "%~f0" (cd.>"%temp%\runas.Admin" & start "%~n0" /high "%temp%\runas.Admin" "%~f0" "%_:"=""%" & exit /b)
  8.  
  9. ::# toggle protected Driver key on/off if no arguments, else "restore" or "block"
  10. set KEY=HKLM\SOFTWARE\Microsoft\WindowsUpdate\ExpressionEvaluators\Driver
  11. call :reg_own %KEY% -recurse Inherit -user S-1-1-0 -acc Allow -perm 'FullControl'
  12. call :reg_var %KEY% Prefixes DRIVERS
  13. set CL=%1& for %%a in (%1) do if /i %%~a == restore (set DRIVERS=Blocked) else if /i %%~a == block (set DRIVERS=Restored)
  14. if %DRIVERS% == Blocked (
  15.   >nul reg add %KEY% /f /v Prefixes /t reg_multi_sz /d "d."
  16.   echo; Drivers Update [RESTORED] run again to block
  17. ) else (
  18.   >nul reg add %KEY% /f /v Prefixes /t reg_multi_sz /d "Blocked"
  19.   echo; Drivers Update [BLOCKED] run again to restore
  20. )
  21. call :reg_own %KEY% -recurse Delete -user S-1-1-0 -acc Allow -perm 'FullControl'
  22. if not defined CL timeout /t 7
  23. exit /b
  24.  
  25. :reg_own: [USAGE] call :reg_own "HKCU\Key" -recurse [Inherit|Replace|Delete] -user S-1-5-32-545 -owner '' -acc Allow -perm ReadKey
  26. set ^ #=&set "0=%~f0"&set 1=%*& powershell -nop -c iex(([io.file]::ReadAllText($env:0)-split':reg_own\: .*')[1]);# --%% %*&exit /b
  27. function reg_own { param ( $key, $recurse='', $user='S-1-5-32-544', $owner='', $acc='Allow', $perm='FullControl', [switch]$list )
  28.   $D1=[uri].module.gettype('System.Diagnostics.Process')."GetM`ember"('SetPrivilege',42)[0]; $u=$user; $o=$owner; $p=524288
  29.   'SeSecurityPrivilege','SeTakeOwnershipPrivilege','SeBackupPrivilege','SeRestorePrivilege' |% {$D1.Invoke($null, @("$_",2))}
  30.   $reg=$key-split':?\\',2; $key=$reg-join'\'; $HK=gi -lit Registry::$($reg[0]) -force; $re=$recurse; $in=(1,0)[$re-eq'Inherit']
  31.   $own=$o-eq''; if($own){$o=$u}; $sid=[Security.Principal.SecurityIdentifier]; $w='S-1-1-0',$u,$o |% {new-object $sid($_)}
  32.   $r=($w[0],$p,1,0,0),($w[1],$perm,1,0,$acc) |% {new-object Security.AccessControl.RegistryAccessRule($_)}; function _own($k,$l) {
  33.   $t=$HK.OpenSubKey($k,2,'TakeOwnership'); if($t) { try {$n=$t.GetAccessControl(4)} catch {$n=$HK.GetAccessControl(4)}
  34.   $u=$n.GetOwner($sid); if($own-and $u) {$w[2]=$u}; $n.SetOwner($w[0]); $t.SetAccessControl($n); $d=$HK.GetAccessControl(2)
  35.   $c=$HK.OpenSubKey($k,2,'ChangePermissions'); $b=$c.GetAccessControl(2); $d.RemoveAccessRuleAll($r[1]); $d.ResetAccessRule($r[0])
  36.   $c.SetAccessControl($d); if($re-ne'') {$sk=$HK.OpenSubKey($k).GetSubKeyNames(); foreach($i in $sk) {_own "$k\$i" $false}}
  37.   if($re-ne'') {$b.SetAccessRuleProtection($in,1)}; $b.ResetAccessRule($r[1]); if($re-eq'Delete') {$b.RemoveAccessRuleAll($r[1])}
  38.   $c.SetAccessControl($b); $b,$n |% {$_.SetOwner($w[2])}; $t.SetAccessControl($n)}; if($l) {return $b|fl} }; _own $reg[1] $list
  39. }; iex "reg_own $(([environment]::get_CommandLine()-split'-[-]%+ ?')[1])" # :reg_own: lean & mean snippet by AveYo, 2022.01.15
  40.  
  41. :reg_var [USAGE] call :reg_var "HKCU\Volatile Environment" value-or-"" variable [extra options]
  42. set {var}=& set {reg}=reg query "%~1" /v %2 /z /se "," /f /e& if %2=="" set {reg}=reg query "%~1" /ve /z /se "," /f /e
  43. for /f "skip=2 tokens=* delims=" %%V in ('%{reg}% %4 %5 %6 %7 %8 %9 2^>nul') do if not defined {var} set "{var}=%%V"
  44. if not defined {var} (set {reg}=& set "%~3="& exit /b) else if %2=="" set "{var}=%{var}:*)    =%"& rem AveYo: v3
  45. if not defined {var} (set {reg}=& set "%~3="& exit /b) else set {reg}=& set "%~3=%{var}:*)    =%"& set {var}=& exit /b
  46.  
  47. '@); $0 = "$env:temp\windows_drivers_update_toggle.bat"; ${(=)||} -split "\r?\n" | out-file $0 -encoding default -force; & $0
  48. # press enter
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement