REM OPTIMIZE REGISTRY FOR CABLE MODEM/DSL
REM COPYRIGHT 1999-2000 JOHN NAVAS, ALL RIGHTS RESERVED
REM MAY BE FREELY COPIED IF UNMODIFIED FOR PRIVATE NON-COMMERCIAL USE.
REM VERSION 1.20 (VISUAL BASIC SCRIPT)
REM Version history:
REM	1.0:	Initial release
REM	1.01:	Bug fixes and Windows auto-restart
REM	1.10:	Added removal of ICS InternetMTU (as per Q230116)
REM	1.11:	Increase NetTrans scan from 9 to 19
REM	1.20:	Fixed SetReceiveWindow comparison logic
REM		Added basic support for Windows NT

REM GLOBAL VARIABLES
TitleText = "Navas' Registry Optimization for Cable Modem/DSL 1.20"
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshSysEnv = WshShell.Environment("PROCESS")
Set fso = CreateObject("Scripting.FileSystemObject")
WinNT = False
DQ = Chr(34)
Changes = False

REM VERIFY A PROPER VERSION OF WINDOWS
CheckWindows()

REM MAKE SURE THAT I'M RUNNING IN A WINDOW UNDER CSCRIPT
LaunchCscript()

REM WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
Warning()

REM LOGIC SPECIFIC TO WINDOWS 9X (95/98) AND WINDOWS NT (NT/2000)
If (WinNT) Then
  HandleWinNT()
Else
  HandleWin9x()
End If


REM LOGIC SPECIFIC TO WINDOWS NT (NT/2000)
Sub HandleWinNT

REM Check Privileges
msg = "This script MUST be run with Administrator privilege!"
msg = msg & vbCr & "Are you SURE you want to proceed?"
opt = MsgBox(msg, vbExclamation+vbOKCancel+vbDefaultButton2, TitleText)
If (opt = vbOK) Then
Else
  Wscript.Quit
End If

REM Set Receive Window
arg = "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpWindowSize"
While SetReceiveWindow(arg, "REG_DWORD")
Wend

REM Last Message
If (Changes) Then
  msg = "Changes will not take effect until you restart Windows!"
  MsgBox msg, vbExclamation, TitleText
Else
  MsgBox "No changes made.", vbInformation, TitleText
End If

End Sub


REM LOGIC SPECIFIC TO WINDOWS 9X (95/98)
Sub HandleWin9x

REM Purge MaxMTU Values From The Registry If Permitted
PurgeMaxMTU()

REM Purge Internet Connection Sharing Value From The Registry If Permitted
REM For More Information See Microsoft Knowledge Base Q230116
PurgeInternetMTU()

REM Purge Values That Should Be Left At Defaults If Permitted
PurgeMSTCP("PMTUDiscovery")
PurgeMSTCP("PMTUBlackHoleDetect")
PurgeMSTCP("DefaultTTL")
PurgeMSTCP("KeepAliveTime")
PurgeMSTCP("Tcp1323Opts")
PurgeMSTCP("SackOpts")
PurgeMSTCP("MaxDupAcks")
PurgeMSTCP("Parameters\Tcp1323Opts")
PurgeMSTCP("Parameters\SackOpts")
PurgeMSTCP("Parameters\MaxDupAcks")

REM Set Receive Window
arg = "HKLM\System\CurrentControlSet\Services\VxD\MSTCP\DefaultRcvWindow"
While SetReceiveWindow(arg, "REG_SZ")
Wend

REM Last Message
If (Changes) Then
  msg = "Changes will not take effect until you restart Windows!"
  msg = msg & vbCr & "Restart Windows so that changes will take effect?"
  opt = MsgBox(msg, vbQuestion+vbYesNo, TitleText)
  if (opt = vbYes) Then RestartWindows()
Else
  MsgBox "No changes made.", vbInformation, TitleText
End If

End Sub


REM RESTART WINDOWS SO CHANGES WILL TAKE EFFECT
Sub RestartWindows
WshShell.Run("rundll32.exe shell32.dll,SHExitWindowsEx 2")
Wscript.Quit
End Sub


REM SET RECEIVE WINDOW
Function SetReceiveWindow(full, typ)
SetReceiveWindow = False
msg = "Current Receive Window: "
On Error Resume Next
data = WshShell.RegRead(full)
If (Err) Then
  data = "-1"
  msg = msg & "Windows default (8K)"
else
  msg = msg & CStr(data)
End If
Wscript.Echo msg
msg = msg & vbCr & vbCr
msg = msg & "Recommended settings" & vbCr
msg = msg & "(where 0 means Windows default):" & vbCr & vbCr
msg = msg & "0    " & Chr(9) & "Dial-up modem" & vbCr
msg = msg & "32767" & Chr(9) & "Normal cable modem/DSL" & vbCr
msg = msg & "65535" & Chr(9) & "High latency cable modem/DSL" & vbCr
msg = msg & vbCr & "New setting:"
newdata = InputBox(msg, "Set TCP/IP Receive Window", "32767")
value = CLng(newdata)
If (newdata = "" Or value = CLng(data)) Then
  Wscript.Echo "Not changed!"
Else
  If (value = 0) Then
    WshShell.RegDelete full
    Changes = True
    Wscript.Echo "Changed to Windows default (8K)"
  ElseIf (value >= 512 And value <= 65535) Then
    WshShell.RegWrite full, CStr(value), typ
    Changes = True
    Wscript.Echo "Changed to " + CStr(value)
  Else
    MsgBox "Error: Must be in the range of 512-65535!", vbExclamation, TitleText
    SetReceiveWindow = True
  End If
End If
End Function


REM PURGE A GIVEN MAXMTU VALUE FROM THE REGISTRY IF PERMITTED
Sub PurgeMaxMTU
Wscript.Echo "Checking MaxMTU..."
For n = 0 to 19
  value = Right(CStr(n+10000),4)
  full = "HKLM\System\CurrentControlSet\Services\Class\NetTrans\" & value & "\"
  On Error Resume Next
  data = WshShell.RegRead(full & "MaxMTU")
  If (Err) Then
  Else
    On Error Resume Next
    desc = WshShell.RegRead(full & "DriverDesc")
    msg = "Found Registry entry for " & value & "(" & desc & ")=" & CStr(data) & vbCr
    msg = msg & "Remove it? (Recommended)"
    opt = MsgBox(msg, vbYesNo+vbQuestion, "NetTrans Cleanup")
    If (opt = vbYes) Then
      WshShell.RegDelete(full & "MaxMTU")
      Changes = True
      Wscript.Echo "Removed (as recommended)."
    Else
      Wscript.Echo "Not changed!"
    End If
  End If
Next
Wscript.Echo "Completed."
End Sub


REM PURGE INTERNET CONNECTION SHARING VALUE FROM THE REGISTRY IF PERMITTED
REM FOR MORE INFORMATION SEE MICROSOFT KNOWLEDGE BASE Q230116
Sub PurgeInternetMTU
Wscript.Echo "Checking InternetMTU..."
full = "HKLM\System\CurrentControlSet\Services\ICSharing\Settings\General\InternetMTU"
On Error Resume Next
data = WshShell.RegRead(full)
If (Err) Then
  Wscript.Echo "Not found. (OK)"
Else
  msg = "Found Registry entry for (Internet Connection Sharing) InternetMTU"
  msg = msg & vbCr
  msg = msg & "Remove it? (Recommended for cable modem/DSL, NOT for dial-up)"
  opt = MsgBox(msg, vbYesNo+vbQuestion, "InternetMTU Removal")
  If (opt = vbYes) Then
    WshShell.RegDelete(full)
    Changes = True
    Wscript.Echo "Removed (as recommended)."
  Else
    Wscript.Echo "Not changed!"
  End If
End If
End Sub


REM PURGE A GIVEN MSTCP VALUE FROM THE REGISTRY IF PERMITTED
Sub PurgeMSTCP(value)
full = "HKLM\System\CurrentControlSet\Services\VxD\MSTCP\" & value
Wscript.Echo "Checking " & value & "..."
On Error Resume Next
data = WshShell.RegRead(full)
If (Err) Then
  Wscript.Echo "Not found. (OK)"
Else
  msg = "Found Registry entry for " & value & "=" & CStr(data) & vbCr
  msg = msg & "Remove it? (Recommended)"
  opt = MsgBox(msg, vbYesNo+vbQuestion, "MSTCP Cleanup")
  If (opt = vbYes) Then
    WshShell.RegDelete(full)
    Changes = True
    Wscript.Echo "Removed (as recommended)."
  Else
    Wscript.Echo "Not changed!"
  End If
End If
End Sub


REM MAKE SURE THAT I'M RUNNING IN A WINDOW UNDER CSCRIPT
Sub LaunchCscript
n = InStr(UCase(Mid(WScript.FullName,Len(WScript.Path)+2)),"CSCRIPT")
If (n = 0) Then
  cmd = WshSysEnv("COMSPEC")
  If (fso.FileExists(cmd)) Then
    WshShell.Run(DQ & cmd & DQ & " /C CSCRIPT " & DQ & Wscript.ScriptFullName & DQ)
  Else
    MsgBox "Can't find COMMAND processor (check COMSPEC)!", vbCritical, TitleText
  End If
  Wscript.Quit
End If
End Sub


REM CHECK WINDOWS VERSION
Sub CheckWindows
Dim seg
On Error Resume Next
vkey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion"
data = WshShell.RegRead(vkey)
if (data <> "") Then
  WinNT = True
  seg = Split(data, ".", -1, 1)
  If (seg(0) <> 4 Or seg(1) > 0) Then
    msg = "Windows NT version " & data & " is not supported by this script!"
    MsgBox msg, vbCritical, TitleText
    Wscript.Quit
  End If
Else
  vkey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\VersionNumber"
  data = WshShell.RegRead(vkey)
  seg = Split(data, ".", -1, 1)
  If (seg(0) <> 4 Or seg(1) > 10) Then
    msg = "Windows 9X version " & data & " is not supported by this script!"
    MsgBox msg, vbCritical, TitleText
    Wscript.Quit
  End If
End If
End Sub


REM WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
Sub Warning
  msg = "This script removes unnecessary network settings from"
  msg = msg & " your Registry and adjusts Receive Window for"
  msg = msg & " optimal Internet performance." & vbCr & vbCr
  msg = msg & "WARNING: THESE MODIFICATIONS MAY CAUSE SYSTEM HARM."
  msg = msg & " USE AT YOUR OWN RISK!" & vbCr & vbCr
  msg = msg & "Are you SURE you want to proceed?"
  opt = MsgBox(msg, vbExclamation+vbOKCancel+vbDefaultButton2, TitleText)
  If (opt = vbOK) Then
  Else
    Wscript.Quit
  End If
End Sub

REM END
