Что из перечисленного в вашей ситуации?
1) GetFileAttributes возвращает 33 (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_ARCHIVE)
или
2) GetFileAttributes возвращает 32 (FILE_ATTRIBUTE_ARCHIVE)
Если файл hosts не имеет атрибута «только для чтения», а GetFileAttributes не возвращает INVALID_FILE_ATTRIBUTES, тогда вы можете доверять его возвращаемому значению. Так что если файл на самом деле не имеет атрибута «только для чтения», то у вас есть ситуация # 2 выше.