2017-05-02 2 views
1

Ich verwende QProcess unter Windows und ich habe ein Problem beim Ausführen einer EXE-Datei, die in Programme befindet. Der Versuch, dasselbe mit der CreateProcess() - Funktion auszuführen, funktioniert in Ordnung. Platz im Weg ist nicht das Problem. Ich denke, dass es mit Benutzerzugriffsrechten oder etwas Ähnlichem zusammenhängt. Ich kann den CreateProcess() verwenden, aber ich würde gerne wissen, ob es irgendeinen Weg gibt, wie QProcess funktioniert, wie ich es brauche.QProcess funktioniert nicht in Programme

Mein Code sieht wie folgt aus:

QProcess* myProcess = new QProcess(this); 
myProcess->setProcessEnvironment(myEnvVars); 
myProcess->start("myExePath"); 

Edit: Meine Plattform ist Visual Studio 2015 und Qt 4.71

+2

Ich denke, es bezieht sich auf Zugriff richtig. Versuchen Sie, die GetLastError-Funktion nach dem Erstellen des Prozesses aufzurufen, der zurückgegebene Wert sollte 5 sein, oder starten Sie Ihre Anwendung mit Administratorrechten, um sicherzustellen, dass das Problem mit den Zugriffsrechten verbunden ist. – arturx64

+0

Versuchen Sie nach dem Start die Methode waitForStarted() aufzurufen. – arturx64

+2

Warum sind Sie sicher über Räume? Die von Ihnen verwendete Methode "CreateProcess" und "QProcess :: start" behandelt die von Ihnen angegebene Zeichenfolge anders - möglicherweise das gleiche Problem wie in dieser Frage (http://stackoverflow.com/questions/14637539/createprocess-can-start-a) -process-but-qprocess-can-why) –

Antwort

0

ich hatte das gleiche Problem, und ich habe startDetached Methode verwendet und es funktionierte.

QProcess* myProcess = new QProcess(this); 
myProcess->setProcessEnvironment(myEnvVars); 
myProcess->startDetached("myExePath"); 
+0

Danke, aber ich habe diese Option auch ausprobiert. In diesem Fall ist das Problem Umgebungsvariablen. Sie können mehr hier finden: http://stackoverflow.com/questions/4265946/set-environment-variables-for-startdetached-qprocess – ni1ight

Verwandte Themen