-- as a program option means “all arguments that follow aren’t program options, but files to open”.
--user-data-dir=D:\Chrome is an option, but Chrome reads
-- first and treats that option as a filename.
Try changing that registry value to the following:
"C:\<application-path>\chrome.exe" --user-data-dir=D:\Chrome -- "%1"
There’s also another option. If you don’t need the default profile at all and want to replace it with
D:\Chrome permanently, then you can replace that profile’s directory with a symlink to
D:\Chrome. Chrome will still try to load the default profile, but filesystem will redirect it to your custom profile.