Reading works fine (7.04). However, re-writing the INI file, as caused by writeini on a different section/key, screws up entries that had quotes before.

Here is an example:
INI file (before):

Code:
[blah]
suffix=" \x02\x0315~~\x03"

(\x02 and \x03 are stored in their actual byte representation, not escaped or hex-encoded)

Calling GetPrivateProfileStringW on that reads the value just fine.

However, after writeini has been issued, the INI file looks like this:
Code:
[blah]
suffix= \x02\x0315~~\x03


...which causes GetPrivateProfileStringW to return the value stripped of \x02 and \x03 (only "15~~" is left), which of course, presents a major incompatibility.

I'd suggest to either keep track of whether an entry was in quotes when rewriting the INI, or adding quotation marks to every value that contains characters below 32.

Thanks, Khaled!