cmdline2 = malloc(strlen(cmdline) + 8);
sprintf(cmdline2, "cmd /c %s", cmdline);
- if (!CreateProcessAsUser(restrictedToken, NULL, cmdline2, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+ if (!CreateProcessAsUser(restrictedToken,
+ NULL,
+ cmdline2,
+ NULL,
+ NULL,
+ TRUE,
+ CREATE_SUSPENDED,
+ NULL,
+ NULL,
+ &si,
+ &pi))
{
fprintf(stderr, _("could not start process for \"%s\": %lu\n"),
cmdline2, GetLastError());
exit_nicely(2);
}
+
+#ifndef __CYGWIN__
+ AddUserToDacl(pi.hProcess);
+#endif
+
free(cmdline2);
+ ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
return pi.hProcess;
#endif