Sledgehammer - Windows 10 Update Control

Discussion in 'MDL Projects and Applications' started by pf100, Nov 28, 2016.

  1. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    How about:
    [E]nable Update Service to allow Windows Store.
    [C]ontinue script to run WUMT and check for Windows Updates.
    [Q]uit script, or "Alt + F4", or close window, if you're just verifying or are
    finished changing the update service setting. It stays how it's set above.
     
  2. Whistler4

    Whistler4 MDL Member

    Jul 30, 2015
    205
    198
    10
    Looks good to me. Thanks for being receptive to these suggestions.
     
  3. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    August 26, 2018

    WUMT Wrapper Script 2.5.2

    *Added 60 second delay to "WDU" Windows Defender Update task
    to fix some random problems. If run manually it'll wait for 60
    or more seconds before it actually updates, just so you'll know
    why it's running and seems to not be doing anything ;).

    *Added "WUMT Wrapper Script X.X.X Installer" to title bar of
    installer, and "W.W.S X.X.X" as App Title of installer in task switcher.

    *Improved wording in Configurator pages.

    *"Automatic App Update" in "Windows Update" tasks is now left on,
    all others off as usual. Uninstaller reenables them all.

    *Changed installer picture.

    *Important bugfixes. Please update to this version now.

    Thanks @s1ave77, @Lars220, @rpo, @Whistler4, and @app_raiser

    Also, I plan to work on accommodating versions of windows below 10
    better as soon as I can but I want the script to be as good as it can be
    for Windows 10 first. It's pretty close to perfect now until they change
    things again so maybe soon.
     
  4. Wolfzz

    Wolfzz MDL Novice

    Sep 11, 2015
    19
    16
    0
    Thanks for the update pd100 on my computer I don't have the 60seconds delay maybe because Ive disabled Windows Defender completely as I run my own Antiviral.
    By the way I run the Portable Version
    If I just run the script and press c then press any key I presume the
    *"Automatic App Update" in "Windows Update" tasks is now left on,
    all others off as usual. doesn't work..unless I press e?
     
  5. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    The defender update task WDU doesn't do anything if defender's not running.
    And yes, Automatic App Update only works if you press "E" to leave the update service enabled.
     
  6. #666 Deleted member 1032214, Aug 27, 2018
    Last edited by a moderator: Aug 27, 2018
    @pf100 thank you for your continued work on this project. :)
    i've few suggestion to improve project usability for end users.
    + In portable folder, you should put all the items in Bin folder which doesn't require user interaction directly like, wub wumt_x64wumt_x86 module
    it'll create more cleaner experience and less confusion about what to run for the end users.
    + when script start it flickers 2 or 3 times, i guess this can be avoided? also size of cmd window changes in different stages, i think a fixed size through out all the process should create better experience.
    + add the info in read me to not change portable folder location after applying the script.
    + is it possible to have any workarounds to not create sfc errors?
    + script update seems too frequent, may create problems in users to catch up.i suggest to wait and collect enough improvements and when you dont have any known problems and improvements then release the update.
     
  7. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    @ShiningDog, I'll work on the bin folder idea.
    The script flickers when it runs vb script necessary to create xml's for tasks when used in path with special characters in path (é, è, ù,...). I can't stop the flicker but am working on using vb script inside the script to stop the flickering. I don't like the flickering either, but it works.
    I'll add not to move the script folder.
    The script prevents the system from reading or writing to exe's, dll's, and update tasks even during a major update (1709 to 1803, etc.). SFC errors cannot be avoided with the script, so there are no workarounds other than to uninstall the script if you want to run SFC without errors. That's the price for disabling system access to those files.
    As far as the script update frequency, when I see a problem, I fix it. I realize this makes it hard to stay up to date and I'll do the best I can to not release too soon. The only problem is, I don't get enough feedback. I only found out that v2.5.0 disables updates in the middle of a CU when it happened to me. I had to wait for a CU to find that out.
    I'll try to do better going forward. Thanks for the feedback.
     
  8. rpo

    rpo MDL Expert

    Jan 3, 2010
    1,479
    1,474
    60
  9. Lars220

    Lars220 MDL Novice

    Jun 18, 2018
    38
    56
    0
    More work for overburdened pf100 (?)

    upload_2018-8-28_8-12-35.jpeg
     
  10. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    @Lars220, I'm going to make all windows the same size so I'll attempt to fix Major Geek's screenshots and info after that.
     
  11. rpo

    rpo MDL Expert

    Jan 3, 2010
    1,479
    1,474
    60
    #672 rpo, Aug 28, 2018
    Last edited: Aug 28, 2018
    Better with :
    echo timeout /t 60 /nobreak^>nul

    In conclusion, i propose :
    Code:
    ::
    ::    Create WDU.cmd
    ::
    (
    echo ::Don't run this file. It's for use by wrapper script.::
    echo cd /d "%%~dp0"
    echo timeout /t 60
    echo tasklist ^| findstr /irc:"wumt_x.*exe"
    echo if %%errorlevel%% equ 0 exit
    echo sc query ^| find /i "windefend"
    echo if %%errorlevel%% equ 1 exit
    echo if not exist wub.exe-backup ^(wub.exe /e^)
    echo "%%ProgramFiles%%\Windows Defender\MpCmdRun.exe" -SignatureUpdate
    echo if not exist wub.exe-backup ^(wub.exe /d /p^)
    echo exit
    )>"%~dp0wdu.cmd"
     
  12. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    #673 pf100, Aug 28, 2018
    Last edited: Aug 29, 2018
    (OP)
    Good catch.

    Edit: The file won't work without SETLOCAL EnableDelayedExpansion
    I like this line:
    Code:
    tasklist | findstr /irc:"wumt_x.*exe"
    
    (caret removed)
    It cuts two lines of code. Nice job.

    So here's the final code (that actually does the exact same thing as the current v2.5.2 wdu.cmd except with two lines of code removed)
    Code:
    ::
    ::    Create WDU.cmd
    ::
    (
    echo ::Don't run this file. It's for use by wrapper script.::
    echo SETLOCAL EnableDelayedExpansion
    echo cd /d "%%~dp0"
    echo timeout /t 60
    echo tasklist ^| findstr /irc:"wumt_x.*exe"
    echo if %%errorlevel%% equ 0 exit
    echo sc query ^| find /i "windefend"
    echo if %%errorlevel%% equ 1 exit
    echo if not exist wub.exe-backup ^(wub.exe /e^)
    echo "%%ProgramFiles%%\Windows Defender\MpCmdRun.exe" -SignatureUpdate
    echo if not exist wub.exe-backup ^(wub.exe /d /p^)
    echo exit
    )>"%~dp0wdu.cmd"
     
  13. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    v2.5.2 is working beautifully so I'm going to stop development of the script (parts of the script will be re-written or edited, but it will work exactly the same as v2.5.2) and concentrate on a FAQ, documentation revision, cosmetics, incorporate vb script into script file to stop screen flashing, and all other recommendations offered. Please keep the feedback coming. Thanks, everybody.
     
  14. rpo

    rpo MDL Expert

    Jan 3, 2010
    1,479
    1,474
    60
    I don't see why SETLOCAL EnableDelayedExpansion should be enabled. But this is only a detail.
     
  15. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    Without it, only the first errorlevel check works, then it sets all further errorlevels to the first one, breaking the script. I found that out by inserting pauses and echoing each errorlevel.
     
  16. rpo

    rpo MDL Expert

    Jan 3, 2010
    1,479
    1,474
    60
    We could adopt this:
    Code:
    ::
    ::    Create WDU.cmd
    ::
    (
    echo SETLOCAL EnableDelayedExpansion
    echo whoami /user /nh ^| find /i "S-1-5-18"
    echo if not %%errorlevel%% equ 0 exit
    echo cd /d "%%~dp0"
    echo timeout /t 60
    echo tasklist ^| findstr /irc:"wumt_x.*exe"
    echo if %%errorlevel%% equ 0 exit
    echo sc query ^| find /i "windefend"
    echo if %%errorlevel%% equ 1 exit
    echo if not exist wub.exe-backup ^(wub.exe /e^)
    echo "%%ProgramFiles%%\Windows Defender\MpCmdRun.exe" -SignatureUpdate
    echo if not exist wub.exe-backup ^(wub.exe /d /p^)
    echo exit
    )>"%~dp0wdu.cmd"
     
  17. pf100

    pf100 Duct Tape Coder

    Oct 22, 2010
    2,067
    3,455
    90
    This looks good and am going to use it. I was planning on testing it but I haven't had time. I went to sleep, then had to get up 4 hours later and leave and am typing this on my phone while sitting in a car in a parking lot. :)
     
  18. rpo

    rpo MDL Expert

    Jan 3, 2010
    1,479
    1,474
    60
    I don't understand this 60 s delay. The WDU task starts at 00:01:00 and is repeated every 2 hours. So what?
    What makes sense for me is delaying the wub_task since it is scheduled at startup and logon times which correspond with high system activity.