I just double-checked what I saw in the file with the following routine:
Public Sub CheckBytes(Byval onFile as String)
Dim StreamOfFile as BCFile.FileStream
Dim StringRead as String,CountMismatch as Long
Set StreamOfFile = BCFile.OpenStream(onfile)
Do Until StreamOfFile.AtEndOfStream
StringRead = StreamofFile.ReadString(32768,strRead_ANSI)
if StrComp(Stringread,String$(len(stringread),vbnullchar)) <> 0 then
debug.Print "Compare mismatch"
countmismatch = countmismatch+1
End If
Loop
StreamOfFile.CloseStream()
debug.print "number of 32K blocks that contain non-null characters:" & countmismatch
End Sub
I ran it on the extracted image. the result was that there were 0 32K blocks containing non-null characters.
This is not a valid image, and the only reason it is 20MB in size is because the entire thing is just one character repeated billions of times. In fact, 20MB is far more then would be necessary, the only thing you'd need to compress this file is a Unsigned long integer to store the number of bytes, so it could be reduced to only 8 bytes.
Wondering why it worked for your friends is irrelevant. Because it did not. There is not "it probably didn't work" or even an inkling of a possibility that it worked. saying it worked is analogous to saying you were able to turn a cooked egg into a raw egg again.
lastly, what exactly are you copying? your explanation is not clear. you copied the contents of your XP OS? Is this the CD, your windows directory, or what? same with the other entries. copying your program files folder is pointless and even if you had a valid archive from that it would be completely useless. And larger then 20MB.