Sub Main
 Dim lngCLFlags, lngMode, lngRC, strProfile, strVersion, blnVerbose, arrConfig
? BEGIN COMMENT
 ? Переключатели /ENABLE и /DISABLE еще не указаны.
? END COMMENT
 lngCLFlags = CL_NONE
 With WScript.Arguments
  If .Named.Exists(?) Then Usage
  If .Named.Exists(DISABLE) Then lngCLFlags = lngCLFlags Or CL_DISABLE
  If .Named.Exists(ENABLE) Then lngCLFlags = lngCLFlags Or CL_ENABLE
  strProfile = .Named(P)
  blnVerbose = .Named.Exists(V)
 End With
 If ScriptHost() <> cscript.exe Then _
  Die You must run this script using the CScript host., 1
? BEGIN COMMENT
 ? Нельзя указать одновременно переключатели /ENABLE и /DISABLE.
? END COMMENT
 If ((lngCLFlags And CL_DISABLE) <> 0) _
  And ((lngCLFlags And CL_ENABLE) <> 0) Then Usage
? BEGIN COMMENT
 ? Получение класса StdRegProv из инструментария WMI.
? END COMMENT
 Set g_objReg = GetObject(WinMgmts: _
  & {impersonationlevel=impersonate}!root/default:StdRegProv)
 strVersion = GetOutlookVersion()
 If blnVerbose Then _
  WScript.Echo Outlook.exe is version  & strVersion
? BEGIN COMMENT
 ? Требуется служба Outlook 11 (2003) или более поздняя версия.
? END COMMENT
 If GetVersionPortion(strVersion, 0) < 11 Then _
  Die Outlook is not installed, or is not version 2003 or later., 1
 If strProfile =  Then strProfile = GetDefaultProfile()
 If strProfile =  Then _
  Die Unable to determine default Outlook profile., 2
 If blnVerbose Then _
  WScript.Echo Outlook profile:  & strProfile
 If Not ProfileKeyExists(strProfile) Then _
  Die Outlook profile registry subkey not found., 2
? BEGIN COMMENT
 ? Получение массива байтов из реестра.
? END COMMENT
 arrConfig = GetExchangeConfig(strProfile)
? BEGIN COMMENT
 ? Проверка состояния бита, определяющего настройку режима Cached Exchange Mode.
? END COMMENT
 lngMode = GetCachedExhangeMode(arrConfig)
 If lngMode = -2 Then _
  Die Unable to read Cached Exchange Mode setting from registry., 13
 If blnVerbose Then _
  WScript.Echo Registry data:  & ByteArrayToString(arrConfig)
 If lngCLFlags = CL_NONE Then
  WScript.Echo Cached Exchange Mode is currently  _
   & IIf(CBool(lngMode), ENABLED, DISABLED)
  lngRC = IIf(CBool(lngMode), 1, 0)
 Else
? BEGIN COMMENT
  ? Изменение битов массива для включения режима Cached Exchange Mode.
? END COMMENT
  SetCachedExchangeMode (lngCLFlags And CL_ENABLE) <> 0, arrConfig
  ? Write the array of bytes back to the registry.
  lngRC = UpdateRegistry(strProfile, arrConfig)
  If lngRC = 0 Then
   If blnVerbose Then
    arrConfig = GetExchangeConfig(strProfile)
    WScript.Echo New registry data:  & ByteArrayToString(arrConfig)
   End If
   WScript.Echo Cached Exchange Mode is now  _
    & IIf((lngCLFlags And CL_ENABLE) <> 0, ENABLED, DISABLED)
  Else
   WScript.Echo Error updating registry.
  End If
 End If
 WScript.Quit lngRC
End Sub