regarding spawnProcess and parameters in Windows

Danny Arends Danny.Arends at gmail.com
Sun Dec 15 16:59:50 PST 2013


On Sunday, 15 December 2013 at 23:14:45 UTC, Hugo Florentino 
wrote:
> Hello,
>
> I am trying to do a small launcher for a Windows application 
> which (in order to be portable) requires a specific parameter, 
> and I am getting this error when I try to run it in Windows 7 
> SP1:
>
> "std.process.ProcessException at std\process.d(518): Failed to 
> spawn new process (Access denied.)"
>
> This is the code I am trying to use:
>
> import std.stdio, std.file, std.path, std.string, std.process;
>
> static auto appname = "myapp";
>
> int main(string[] args) {
>   auto appath = dirName(thisExePath());
>   auto appexe = buildPath(appath, appname ~ ".exe");
>   auto appini = buildPath(appath, appname ~ ".ini");
>   auto applaunchpars = format(`"%s" /ini="%s"`, appexe, appini);
>   if (exists(appexe)) {
>     auto appPid = spawnProcess(applaunchpars, ["" : ""], 
> Config.suppressConsole);
>     scope(failure) return -1;
>   }
>   return 0;
> }
>
> The ugly ["" : ""] hack is because I haven't been able to 
> invoke spawnProcess otherwise, at least withouth specifying 
> stdin and stdout (which I don't really need right now). 
> Actually, I was thinking in making my own wrapper for 
> ShellExecuteA (I don't find spawnProcess particularly 
> intuitive), but I would prefer "the D way".
>
> Anyway, Where could the problem be?
>
> Regards, Hugo

You need to pass the INI parameters separately see:

http://dlang.org/phobos/std_process.html#.spawnProcess

spawnProcess([appexe,format("/INI=%s")], ["",""], 
Config.suppressConsole);

Gr,
Danny Arends
http://www.dannyarends.nl


More information about the Digitalmars-d-learn mailing list