I was having problems opening some rar archives in a Windows 8 app because the FilePath was corrupted (had the '\0' and extra chars.
I stepped through the code, and saw that when calling HasFlags to check for Unicode, the enumVal is a negative number, and so enumVal.GetHashCode() is < 0, which is still correct.
The easiest fix, since the code converts the values to UInt32 is to make FileFlags an enum of type ushort, which resolved my problems.