Passing empty argument to a process just adds an extra space to its command line on Windows which is normally ignored. Not sure how it would work on Posix, but makes it impossible to pass empty value under Windows.
Possible solution would be in ...process\detail\windows\basic_cmd.hpp build_args(..) which quotes arguments if necessary, to also quote empty ones. E.g. something like:
if(!arg.empty()) {...} else arg = "\"\"";