Hola, como funcionar en XP funciona, claro como dice Raul puede que el servicio no este habilitado, pero creo que las probabilidades son muy bajas.
este parte de un código que usaba yo en una clase en la cual te da el progreso pero solo te pongo lo principal por si te interesa la clase esta en la parte del blog como Proyecto 2, en la parte del cliente.
Public Function UnZipPath(ByVal SrcPath As String, ByVal DestPath As String) As Boolean
On Error GoTo Fail
Dim oShell As Object
Dim OrigItem As Object
Dim DestItem As Object
Set oShell = CreateObject("Shell.Application")
For Each OrigItem In oShell.NameSpace(CVar(SrcPath)).Items
For Each DestItem In oShell.NameSpace(CVar(DestPath)).Items
If CBool((OrigItem.Name = DestItem.Name) And (OrigItem.Type = DestItem.Type)) Then GoTo Fail
Next
Next
oShell.NameSpace(CVar(DestPath)).CopyHere oShell.NameSpace(CVar(SrcPath)).Items
UnZipPath = True
Fail:
End Function
Public Function ZipPath(ByVal SrcPath As String, ByVal DestPath As String) As Boolean
On Error GoTo Fail
Dim oShell As Object
If Dir(DestPath) <> "" Then Kill DestPath
Set oShell = CreateObject("Shell.Application")
If Dir(DestPath) = "" Then
Open DestPath For Binary As #1
Put #1, , CStr("PK" & Chr(5) & Chr(6) & String(18, Chr(0)))
Close
End If
oShell.NameSpace(CVar(DestPath)).CopyHere CVar(SrcPath)
ZipPath = True
Fail:
End Function
Saludos.