Further, notice what happens if I remove the buildNormalizedPath: mytestapp dir1 ..\ "another dir\" Argument 0: 'mytestapp ' Argument 1: 'dir' Argument 2: '..\' Argument 3: 'another dir"' Apparently the backslash is still being interpreted as an escape when followed by a double quote, even if the arguments come from GetCommandLineW.