Share via


Windows 7 VDI script

 Moving content off Jeff Stokes Blog to WIKI.


Disclaimer

This Sample Code is provided for the purpose of illustration only and is not intended to be used in a production environment.  THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.  We grant You a nonexclusive, royalty-free right to use and modify the Sample Code and to reproduce and distribute the object code form of the Sample Code, provided that You agree: (i) to not use Our name, logo, or trademarks to market Your software product in which the Sample Code is embedded; (ii) to include a valid copyright notice on Your software product in which the Sample Code is embedded; and (iii) to indemnify, hold harmless, and defend Us and Our suppliers from and against any claims or lawsuits, including attorneys’ fees, that arise or result from the use or distribution of the Sample Code.

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at  Microsoft Terms of Use.


 

' // ========================================================================
  ' // Original generated with VDIOptimizer - http://www.autoitscript.com/tools
  ' // (c)2010 Jonathan Bennett
  ' //
  ' // Version:          1.3-Win8
  ' // Last Modified:    9th April 2013
  ' // Last Modified by: Carl Luberti (MSFT)
  ' // Contributions by: Jeff Stokes (MSFT)
  ' // ========================================================================
 
 
  ' // ==============
  ' // General Advice
  ' // ==============
  '
  ' Before finalizing the image perform the following tasks:
  ' - Ensure no unwanted startup files by using autoruns.exe from SysInternals
  ' - Run the Disk Cleanup tool as administrator and delete all temporary files and system restore points (can be automated with this script)
  ' - Run disk defrag and consolidate free space: defrag c: /v /x
  ' - Reboot the machine 6 times and wait 120 seconds after logging on before performing the next reboot (boot prefetch training)
  ' - Run disk defrag and optimize boot files: defrag c: /v /b
  ' - If using a dynamic virtual disk, use the vendor's utilities to perform a "shrink" operation
 
 
  ' // *************
  ' // *  CAUTION  *
  ' // *************
  '
  ' THIS SCRIPT MAKES CONSIDERABLE CHANGES TO THE DEFAULT CONFIGURATION OF WINDOWS.
  '
  ' Please review this script THOROUGHLY before applying to your virtual machine, and disable changes below as necessary to suit your current
  ' environment.
  '
  ' This script is provided AS-IS - usage of this source assumes that you are at the very least familiar with the vbscript language being used and the
  ' tools used to create and debug this file.
  '
  ' In other words, if you break it, you get to keep the pieces.
 
 
  ' Constants
Const ForReading = 1
Const Disable_Aero = False
Const Disable_BranchCache = False
Const Disable_EFS = False
Const Disable_iSCSI = False
Const Disable_MachPass = False
Const Disable_Search = False
 
Const Install_NetFX3 = False
Const NetFX3_Source = "D:\Sources\SxS"
 
' Common objects
  Set oShell = WScript.CreateObject ("WScript.Shell")
  Set oFSO = CreateObject("Scripting.FileSystemObject")
  Set oEnv = oShell.Environment("User")
 
' Command Line Arguments for Some Settings
  Set colNamedArguments = WScript.Arguments.Named
 
If colNamedArguments.Exists("Aero") Then
     strAero = colNamedArguments.Item("Aero")
  Else
     strAero = Disable_Aero
  End If
 
If colNamedArguments.Exists("BranchCache") Then
     strBranchCache = colNamedArguments.Item("BranchCache")
  Else
     strBranchCache = Disable_BranchCache
  End If
 
If colNamedArguments.Exists("EFS") Then
     strEFS = colNamedArguments.Item("EFS")
  Else
     strEFS = Disable_EFS
  End If
 
If colNamedArguments.Exists("iSCSI") Then
     striSCSI = colNamedArguments.Item("iSCSI")
  Else
     striSCSI = Disable_iSCSI
  End If
 
If colNamedArguments.Exists("MachPass") Then
     strMachPass = colNamedArguments.Item("MachPass")
  Else
     strMachPass = Disable_MachPass
  End If
 
If colNamedArguments.Exists("Search") Then
    strSearch = colNamedArguments.Item("Search")
  Else
    strSearch = Disable_Search
  End If
 
If colNamedArguments.Exists("NetFX3") Then
    strNetFX3 = colNamedArguments.Item("NetFX3")
  Else
    strNetFX3 = Install_NetFX3
  End If
 
 
  ' First things first - enable RDP Connections!!!
RunWait "WMIC rdtoggle where AllowTSConnections=0 call SetAllowTSConnections 1,1"
RunWait "netsh advfirewall firewall set rule group=" & Chr(34) & "remote desktop" & Chr(34) & " new enable=Yes"
 
 
 
' // ==================
  ' // Configure Services
  ' // ==================
 
' Disable Application Layer Gateway Service
RunWait "sc config ALG start= disabled"
 
' Disable Background Intelligent Transfer Service
RunWait "sc config BITS start= disabled"
 
' Disable Bitlocker Drive Encryption Service
RunWait "sc config BDESVC start= disabled"
 
' Disable Block Level Backup Engine Service
RunWait "sc config wbengine start= disabled"
 
' Disable Bluetooth Support Service
RunWait "sc config bthserv start= disabled"
 
If strBranchCache = True Then
    ' Disable BranchCache Service
    RunWait "sc config PeerDistSvc start= disabled"
  End If
 
' Disable Computer Browser Service
RunWait "sc config Browser start= disabled"
 
' Disable Device Association Service
RunWait "sc config DeviceAssociationService start= disabled"
 
' Disable Device Setup Manager Service
RunWait "sc config DsmSvc start= disabled"
 
' Disable Diagnostic Policy Services
RunWait "sc config DPS start= disabled"
RunWait "sc config WdiServiceHost start= disabled"
RunWait "sc config WdiSystemHost start= disabled"
 
' Disable Distributed Link Tracking Client Service
RunWait "sc stop TrkWks"
RunWait "sc config TrkWks start= disabled"
 
If strEFS = True Then
    ' Disable Encrypting File System Service
    RunWait "sc config EFS start= disabled"
  End If
 
' Disable Family Safety Service
RunWait "sc config WPCSvc start= disabled"
 
' Disable Fax Service
RunWait "sc config Fax start= disabled"
 
' Disable Function Discovery Resource Publication Service
RunWait "sc config fdPHost start= disabled"
 
' Disable HomeGroup Listener Service
RunWait "sc config HomeGroupListener start= disabled"
 
' Disable HomeGroup Provider Service
RunWait "sc config HomeGroupProvider start= disabled"
 
If striSCSI = True Then
    ' Disable Microsoft iSCSI Initiator Service
    RunWait "sc config msiscsi start= disabled"
  End If
 
' Disable Microsoft Software Shadow Copy Provider Service
RunWait "sc config swprv start= disabled"
 
' Set Network List Service to Auto
RunWait "sc config netprofm start= auto"
 
' Disable Optimize Drives Service
RunWait "schtasks /change /tn ""microsoft\windows\defrag\ScheduledDefrag"" /disable"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction\Enable", "N", "REG_SZ"
RunWait "sc config defragsvc start= disabled"
 
' Disable Secure Socket Tunneling Protocol Service
RunWait "sc config SstpSvc start= disabled"
 
' Disable Sensor Monitoring Service
RunWait "sc config SensrSvc start= disabled"
 
' Disable Shell Hardware Detection Service
RunWait "sc config ShellHWDetection start= disabled"
 
' Disable SNMP Trap Service
RunWait "sc config SNMPTRAP start= disabled"
 
' Disable SSDP Discovery Service
RunWait "sc stop SSDPSRV"
RunWait "sc config SSDPSRV start= disabled"
 
' Disable Telephony Service
RunWait "sc config TapiSrv start= disabled"
 
If strAero = True Then
    ' Disable Themes Service
    RunWait "sc config Themes start= disabled"
  End If
 
' Disable UPnP Device Host Service
RunWait "sc config upnphost start= disabled"
 
' Disable Volume Shadow Copy Service
RunWait "sc config VSS start= disabled"
 
' Disable Windows Backup Service
RunWait "sc config SDRSVC start= disabled"
 
' Disable Windows Color System Service
RunWait "sc config WcsPlugInService start= disabled"
 
' Disable Windows Connect Now - Config Registrar Service
RunWait "sc config wcncsvc start= disabled"
 
' Disable Windows Defender Service
RunWait "schtasks /change /tn ""microsoft\windows\windows Defender\Windows Defender Cache Maintenance"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\windows Defender\Windows Defender Cleanup"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\windows Defender\Windows Defender Scheduled Scan"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\windows Defender\Windows Defender Verification"" /disable"
 
' Disable Windows Error Reporting Service
RunWait "sc config WerSvc start= disabled"
 
' Disable Windows Media Player Network Sharing Service
RunWait "sc config WMPNetworkSvc start= disabled"
 
' Break out Windows Management Instrumentation Service
RunWait "winmgmt /standalonehost"
RunWait "sc config winmgmt group= COM Infrastructure"
 
'Disable Windows Search Service
  If strSearch = True Then
    RunWait "sc stop WSearch"
    RunWait "sc config WSearch start= disabled"
  End If
 
' Disable WLAN AutoConfig Service
RunWait "sc config Wlansvc start= disabled"
 
' Disable WWAN AutoConfig Service
RunWait "sc config WwanSvc start= disabled"
 
 
 
' // ================
  ' // MACHINE SETTINGS
  ' // ================
 
' Disable Hard disk timeouts
RunWait "POWERCFG /SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 0012ee47-9041-4b5d-9b77-535fba8b1442 6738e2c4-e8a5-4a42-b16a-e040e769756e 0"
RunWait "POWERCFG /SETDCVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 0012ee47-9041-4b5d-9b77-535fba8b1442 6738e2c4-e8a5-4a42-b16a-e040e769756e 0"
 
 
  ' Disable TCP/IP / Large Send Offload
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DisableTaskOffload", &H00000001, "REG_DWORD"
 
 
  ' Disable hibernate
RunWait "powercfg -h off"
 
 
  ' Disable System Restore
  Set objWMIService = GetObject("winmgmts:\\.\root\default")
  Set objItem = objWMIService.Get("SystemRestore")
objItem.Disable("")
RunWait "schtasks /change /tn ""microsoft\windows\SystemRestore\SR"" /disable"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore\DisableSR", &H00000001, "REG_DWORD"
 
 
  ' Disable NTFS Last Access Timestamps
RunWait "FSUTIL behavior set disablelastaccess 1"
 
 
  If strMachPass = True Then
    ' Disable Machine Account Password Changes
    oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange", &H00000001, "REG_DWORD"
  End If
 
 
  ' Disable memory dumps
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\CrashDumpEnabled", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\LogEvent", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\SendAlert", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\AutoReboot", &H00000001, "REG_DWORD"
 
 
  ' Disable default system screensaver
oShell.RegWrite "HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveActive", 0, "REG_DWORD"
 
 
  ' Increase service startup timeouts
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServicesPipeTimeout", &H0002bf20, "REG_DWORD"
 
 
  ' Increase Disk I/O Timeout to 200 seconds.
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\TimeOutValue", &H000000C8, "REG_DWORD"
 
 
  ' Disable Other Scheduled Tasks
RunWait "schtasks /change /tn ""microsoft\windows\Application Experience\AitAgent"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Application Experience\ProgramDataUpdater"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Application Experience\StartupAppTask"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Autochk\Proxy"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Bluetooth\UninstallDeviceTask"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Customer Experience Improvement Program\BthSQM"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Customer Experience Improvement Program\Consolidator"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Customer Experience Improvement Program\KernelCeipTask"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Customer Experience Improvement Program\Uploader"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Customer Experience Improvement Program\UsbCeip"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Diagnosis\Scheduled"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticResolver"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Maintenance\WinSAT"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\MobilePC\HotStart"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Power Efficiency Diagnostic\AnalyzeSystem"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\RAC\RacTask"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Ras\MobilityManager"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Registry\RegIdleBackup"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Shell\FamilySafetyMonitor"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Shell\FamilySafetyRefresh"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\SideShow\AutoWake"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\SideShow\GadgetManager"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\SideShow\SessionAgent"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\SideShow\SystemDataProviders"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\UPnP\UPnPHostConfig"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\WDI\ResolutionHost"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Windows Filtering Platform\BfeOnServiceStartTypeChange"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\Windows Media Sharing\UpdateLibrary"" /disable"
RunWait "schtasks /change /tn ""microsoft\windows\WindowsBackup\ConfigNotification"" /disable"
 
 
  ' Configure Event Logs to 1028KB (Minimum size under Vista/7) and set retention to "overwrite"
  Set oEventLogs = GetObject("winmgmts:{impersonationLevel=impersonate,(Security)}!//./root/cimv2").InstancesOf("Win32_NTEventLogFile")
  For Each  e in oEventLogs
    e.MaxFileSize = 1052672
    e.OverWritePolicy = "WhenNeeded"
    e.OverWriteOutdated = 0
    e.Put_
    e.ClearEventLog()
  Next
 
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\eventlog\Application\Retention", 0, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\eventlog\Security\Retention", 0, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\eventlog\System\Retention", 0, "REG_DWORD"
 
 
  ' Set PopUp Error Mode to "Neither"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode", 2, "REG_DWORD"
 
 
  ' Disable bootlog and boot animation
RunWait "bcdedit /set {default} bootlog no"
RunWait "bcdedit /set {default} quietboot yes"
 
 
  ' Disable UAC secure desktop prompt
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop", &H00000000, "REG_DWORD"
 
 
  ' Disable New Network dialog
RunWait "reg add HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff"
 
 
  ' Disable AutoUpdate of drivers from WU
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DriverSearching\searchorderConfig", 0, "REG_DWORD"
 
 
  ' Turn off Windows SideShow and install NetFX3
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Sideshow\Disabled", 1, "REG_DWORD"
  If strNetFX3 = True Then
    RunWait "dism /online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:" & NetFX3_Source & " /NoRestart"
  End If
 
' Disable IE First Run Wizard and RSS Feeds
oShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Internet Explorer\Main\DisableFirstRunCustomize", 1, "REG_DWORD"
 
 
  ' Disable the ability to clear the paging file during shutdown
oShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\ClearPageFileAtShutdown", 0, "REG_DWORD"
 
 
  ' Perform a disk cleanup
  ' Automate by creating the reg checks corresponding to "cleanmgr /sageset:100" so we can use "sagerun:100"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Active Setup Temp Folders\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Downloaded Program Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Internet Cache Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Memory Dump Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Offline Pages Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Old ChkDsk Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Previous Installations\StateFlags0100", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Recycle Bin\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Setup Log Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\System error memory dump files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\System error minidump files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Setup Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Upgrade Discarded Files\StateFlags0100", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Error Reporting Archive Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Error Reporting Queue Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Error Reporting System Archive Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Error Reporting System Queue Files\StateFlags0100", &H00000002, "REG_DWORD"
oShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Upgrade Log Files\StateFlags0100", &H00000002, "REG_DWORD"
RunWait "cleanmgr.exe /sagerun:100"
 
 
 
' // =============
  ' // USER SETTINGS
  ' // =============
 
' Reduce menu show delay
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\MenuShowDelay", "0", "REG_SZ"
 
 
  ' Disable cursor blink
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\CursorBlinkRate", "-1", "REG_SZ"
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\DisableCursorBlink", &H00000001, "REG_DWORD"
 
 
  ' Force off-screen composition in IE
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Force Offscreen Composition", &H00000001, "REG_DWORD"
 
 
  ' Disable screensavers
oShell.RegWrite "HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop\ScreenSaveActive", "0", "REG_SZ"
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive", "0", "REG_SZ"
oShell.RegWrite "HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveActive", "0", "REG_SZ"
 
 
  ' Don't show window contents when dragging
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\DragFullWindows", "0", "REG_SZ"
 
 
  ' Don't show window minimize/maximize animations
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\MinAnimate", "0", "REG_SZ"
 
 
  ' Disable font smoothing
oShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\FontSmoothing", "0", "REG_SZ"
 
 
  ' Disable most other visual effects
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\VisualFXSetting", &H00000003, "REG_DWORD"
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ListviewAlphaSelect", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarAnimations", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ListviewWatermark", &H00000000, "REG_DWORD"
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ListviewShadow", &H00000000, "REG_DWORD"
RegBinWrite "HKEY_CURRENT_USER\Control Panel\Desktop", "UserPreferencesMask", "90,12,01,80"
 
 
  ' Disable Action Center
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\HideSCAHealth", &H00000001, "REG_DWORD"
 
 
  ' Disable IE Persistent Cache
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache\Persistent", 0, "REG_DWORD"
oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Feeds\SyncStatus", 0, "REG_DWORD"
 
 
  ' Done
WScript.Quit
 
 
 
 
 
 
  ' // ================
  ' // HELPER FUNCTIONS
  ' // ================
 
Function Run(sFile)
    Run = oShell.Run(sFile, 1, False)
  End Function
 
 
  Function RunWait(sFile)
    RunWait = oShell.Run(sFile, 1, True)
  End Function
 
 
  Function RunWaitHidden(sFile)
    RunWaitHidden = oShell.Run(sFile, 0, True)
  End Function
 
 
  Function IsServer()
    IsServer = False
    On Error  Resume Next
    For Each  objOS in GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
        If objOS.ProductType = 1 Then IsServer = False
        If objOS.ProductType = 2 Or ObjOS.ProductType = 3 Then IsServer = True
    Next
  End Function
 
 
  Sub RegBinWrite (key, value, data)
    key = "[" & key &  "]"
 
    If value <> "@"  then
        value = chr(34) & value & chr(34)
    End if
 
    valString = value & "=" & "hex:" & data
 
    tempFile = GetTempDir() & "\regbinaryimport.reg"
    Set txtStream = oFSO.CreateTextFile(tempFile,true)
    txtStream.WriteLine("Windows Registry Editor Version 5.00")
    txtStream.WriteLine(key)
    txtStream.WriteLine(valString)
    txtStream.Close
 
    oShell.Run "regedit.exe /s """ & tempFile & """", 1, true
 
    oFSO.DeleteFile tempFile
  End Sub
 
 
  Function GetTEMPDir()
    GetTEMPDir = oEnv("TEMP")
    If InStr(GetTEMPDir, "%") Then
        GetTEMPDir = oShell.ExpandEnvironmentStrings(GetTEMPDir)
    End If
  End Function