Daniel Colascione writes:

> After another reading of cmdproxy.c, I also see that the
> CreateProcess path also doesn't expand environment %variable%
> references, and that doesn't fall back to cmd if the command
> to be executed contains them.  While we could expand these
> variables, doing so would move us even closer to
> reimplementing half of cmd.exe.

You are exaggerating a great deal.  It is a single function call, ExpandEnvironmentStrings, documented at http://msdn.microsoft.com/en-us/library/ms724265%28v=vs.85%29.aspx.  Patching cmdproxy.c to use ExpandEnvironmentStrings before calling CreateProcess would add at most 10 lines of code.  This is by no means "reimplementing half of cmd.exe."