I see, it does behave like the command line w.r.t quotes, and you sidestep the leading spaces case by prepending "wmic ", but that's not pretty. It would be better to strip whitespace from the command buffer and pass that to CommandLineToArgvW().
process_args() then doesn't need to handle command line switches or call setlocale() again. STRING_CMDLINE_NOT_SUPPORTED doesn't make sense in interactive mode. I think we should split it into STRING_SWITCH_NOT_SUPPORTED and STRING_COMMAND_NOT_SUPPORTED.