Кто сталкивался с проблемой:
Как отключить автоматическое сжатие папок в Outlook Express
Когда пользователи не любят удалять почту, хранят ее как архив, со временем накапливается по 10 GB и больше. Папки в освновном по 2Gb. Сжатие их бессмысленно, так в них лежит архив и ничего оттуда не удаляется. Процесс длится часами и чаще всего заканчивается ошибками. Требование о сжатии возникает в конце дня при закрытии OE и вызывает законное раздражение пользователя.
Как этого избежать? Здесь давали рецепт, поправить в реестре ключик Compact Check Count. Но к каждому пользователю не набегаешься, проблема появляется снова и снова. Простой .reg-файл написать невозможно, так как у каждого пользователя путь в реестре к этому ключу отличается на пользовательский GUID
Предлагаю решение: универсальный скрипт для сброса ключа Compact Check Count для любого пользователя:
ResetOEComactFolder.vbs
Код:

On Error Resume Next
'Global constants and variables
Const HKEY_CURRENT_USER = &H80000001
g_strKeyPath = "Identities"
strComputer = "."
g_intValue = 0
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
If Err = 0 Then
g_strID = GetID
If IsEmpty(g_strID) Then
WScript.Echo "ERROR: Unable to obtain default user ID."
Else
SetValue
End If
Else
WScript.Echo "ERROR: Unable to connect to WMI StdRegProv on " & _
strComputer & "."
WScript.Echo " Error Number: " & Err.Number
WScript.Echo " Source: " & Err.Source
WScript.Echo " Description: " & Err.Description
End If
Err.Clear
Function GetID
'Local variables
strEntryName1 = "Default User ID"
intReturn = objReg.GetStringValue(HKEY_CURRENT_USER, g_strKeyPath, _
strEntryName1, strValue)
If intReturn = 0 Then
GetID = strValue
Else
GetID = ""
End If
End Function
'******************************************************************************
Sub SetValue
'Local variables
strKeyPath2 = g_strKeyPath & "\" & g_strID & "\Software\Microsoft" & _
"\Outlook Express\5.0"
strEntryName2 = "Compact Check Count"
intReturn = objReg.SetDWORDValue(HKEY_CURRENT_USER, strKeyPath2, _
strEntryName2, g_intValue)
If intReturn = 0 Then
WScript.Echo "Changed value of " & strEntryName2 & " to " & g_intValue & "."
Else
WScript.Echo "ERROR: Unable to change value of " & strEntryName2 & "."
End If
End Sub
запускать в логон скрипте следующей командой
Код:

cscript ResetOEComactFolder.vbs //nologo
Спасибо за внимание.