You know what's awesome? Try to create a file called con.txt on windows. Or con.anyextension for that matter.
That's boilerplate for compability with DOS application in times there were no folders (every file was stored in the same root catalogue on the disk). Why? Because such files (CON, COM1, LPT1, etc) were files through which programs could access i/o ports of a computer. When DOS evolved to get folders, it had to "emulate" those magic files in every folder, to retain compability with older applications. That's right kids, Windows 7 has still some code left from DOS 1.0.
This is why boilerplate makes Windows suck. Microsoft needs to get over old sh** and create a totally new operating system, like Apple did with OS X. You will lose compability with older software, but what the

, this sort of sh** IS annoying.
Back on topic. I am surprised RA2 doesn't crash when you try to export something with : in it's name.
CreateFile() returns INVALID_HANDLE_VALUE on error, so WinAPI functions to write to a file should (in theory) throw an exception when trying to access a NULL file, which in turn isn't handled by RA2 (otherwise it'd make a nice dialog "cant' save to file you suck blablabla"), and would make the C++ runtime freak out and terminate the program.
WinAPI is one curious beast.