' Windows 98/Me の TCP/IP スタックを最適化 v1.1 ' (C)2000-2001 Windows.FAQ ' http://homepage2.nifty.com/winfaq/ On Error Resume Next Set WShell = WScript.CreateObject("WScript.Shell") Do koc = InputBox("Win9x/Me の TCP/IP を最適化します。"+vbCrLf+"どの環境に最適化しますか?"+vbCrLf+"番号で選択してください。"+vbCrLf+vbCrLf+"1:モデム"+vbCrLf+"2:ISDN"+vbCrLf+"3:ADSL/CATV","デフォルトパラメータの設定","3") if koc = "" then wscript.quit end if if IsValidValue(koc,1,3) = TRUE then exit do else wscript.echo "1 から 3 を選択してください。" end if Loop Select Case koc Case 1 DefaultMTU = 576 DefaultMulti = 6 Case 2 DefaultMTU = 1000 DefaultMulti = 8 Case 3 DefaultMTU = 1454 DefaultMulti = 20 End Select Do szMTU = InputBox("MTU を指定してください。"+vbCrLf+vbCrLf+"推奨値"+vbCrLf+vbCrLf+"モデム:576"+vbCrLf+"ISDN:1000"+vbCrLf+"ADSL:1454","MTU",DefaultMTU) if szMTU = "" then wscript.quit end if if IsValidValue(szMTU,88,1500) = TRUE then exit do else wscript.echo "正しい MTU 値を入力してください。(88-1500)" end if Loop lnMSS = CLng(szMTU) - 40 Do szMulti = InputBox("ウィンドウサイズを MSS に対する倍率で指定してください。"+vbCrLf+vbCrLf+"推奨値"+vbCrLf+vbCrLf+"モデム:6"+vbCrLf+"ISDN:8"+vbCrLf+"ADSL:10 - 200","RWIN",DefaultMulti) if szMulti = "" then wscript.quit end if if IsValidValue(szMulti,2,200) = TRUE then exit do else wscript.echo "正しい倍率を入力してください。(2-200)" end if Loop lnRWIN = lnMSS * CLng(szMulti) szRWIN = CStr(lnRWIN) Do szTTL = InputBox("TTL を設定してください。"+vbCrLf+vbCrLf+"推奨値:64"+vbCrLf+vbCrLf+"設定可能値:16,32,64,128","TTL","64") if szTTL = "" then wscript.quit end if if IsValidValue(szTTL,16,255) = TRUE then exit do else wscript.echo "正しい TTL 値を入力してください。(16-255)" end if Loop if WShell.popup("以下の設定を行いますか?"+vbCrLf+vbCrLf+"MTU:"+szMTU+vbCrLf+"RWIN:"+szRWIN+vbCrLf+"TTL :"+szTTL,0,"設定値の確認",4+32) = 6 then For i=0 to 10 RegPath1 = "HKLM\System\CurrentControlSet\Services\Class\NetTrans\000"+Cstr(i) dd = WShell.RegRead(RegPath1+"\DriverDesc") if Err <> 0 then Err.Clear Exit for end if if dd = "TCP/IP" then WShell.RegWrite RegPath1+"\MaxMTU",szMTU,"REG_SZ" end if Next RegPath2 = "HKLM\System\CurrentControlSet\Services\VxD\MSTCP" WShell.RegWrite RegPath2+"\DefaultRcvWindow",szRWIN,"REG_SZ" WShell.RegWrite RegPath2+"\DefaultTTL",szTTL,"REG_SZ" ' Set Default Paramater WShell.RegWrite RegPath2+"\Tcp1323Opts","1","REG_SZ" WShell.RegWrite RegPath2+"\SackOpts","1","REG_SZ" WScript.Echo "設定が終了しました。"+vbCrLf+"Windows を再起動してください。" else WScript.Echo "設定は行われませんでした。" end if ' 指定した範囲の数値か検証する関数 Function IsValidValue (val1, vlow, vhigh) if IsNumeric(val1) then If CInt(val1) >= CInt(vlow) and CInt(val1) <= CInt(vhigh) then IsValidValue = TRUE else IsValidValue = FALSE end if else IsValidValue = FALSE end if End Function