Weirdness.
Here's some code that works, using Win32::Process. (Note: I made a copy of notepad.exe in my "Program Files" directory to test spaces.)
use Win32::Process;
my $prgPath = 'c:/program files/notepad.exe';
my $prgArgs = 'notepad.exe';
Win32::Process::Create(
$processObj, $prgPath,
$prgArgs, 0,
NORMAL_PRIORITY_CLASS, ".") || die Win32::FormatMessage(Win32::Get
+LastError());
$prgArgs is (obviously) the arguments that get passed into the program. By convention, the first argument is always the executable name. notepad.exe doesn't seem to care if you pass itself in as the first argument or not, but some other programs do...
Hope this helps.
-Ton
-----
Be bloody, bold, and resolute; laugh to scorn
The power of man...