This (and the existence of CYGWIN_ROOT in your environment) is an artifact of using startxwin.bat. Unless you have a default directory for the Cygwin root, you can't use that file OOTB -- you'll have to edit it and replace "\cygwin" with the value of your Cygwin root (in your case, "d:\ProgramFiles\Cygwin".
CYGWIN_ROOT = `\cygwin'
Well, you can always just set CYGWIN_ROOT to \ProgramFiles\Cygwin, with no leading drive letter and colon. I think you probably knew that already... I am still amazed at the number of times I have seen people go in and change \cygwin to c:\cygwin when they have problems... even after reading my comment immediately above it that describes why doing this is not necessary. Sheesh, I thought it was a quite beautiful trick to allow the path to be set correctly no matter what drive the cygwin folder is on. :)
Harold