2010-02-11 18 views
7

Ich möchte eine andere Anwendung von meinem C++ - Programm remote ausführen. Bisher habe ich mit der CreateProcess (...) Funktion mitgespielt und es funktioniert gut.Führen Sie ein anderes Programm in C++

Das Problem ist jedoch, dass ich den vollständigen Pfad des anderen Programms brauche, aber ich kenne das Verzeichnis davon nicht. Also was ich will, ist, dass ich nur den Namen des anderen Programms eingeben muss, wie wenn Sie "cmd" oder "winword" in Run eingeben ... es öffnet die entsprechenden Programme.

Vielen Dank im Voraus, Russo

+1

den vollständigen Pfad der Anwendung auf die Umgebungsvariable PATH ein. – anil

+0

@anil: funktioniert nicht; Die PATH-Umgebungsvariable (trotz ihres Namens) ist normalerweise eine _Liste_ von Pfaden. Welchen von ihnen brauchst du? – MSalters

+0

Parsen Sie die PATH-Variable und überprüfen Sie für jedes Element, ob das Programm dort existiert :-) –

Antwort

7

Sie suchen nach ShellExecute(). Das funktioniert sogar, wenn Sie ihm eine korrekte URL übergeben, genau wie das Menü Ausführen.

1

Die Verzeichnisse der Programme, die Sie von start -> run ausführen können, werden der PATH-Variablen hinzugefügt. Sie können den Ordner, in dem sich Ihr Programm befindet, dem PFAD hinzufügen und dann CreateProcess() verwenden. Sie sagen jedoch, Sie kennen das Verzeichnis nicht, also können Sie das wahrscheinlich nicht tun.

Kennen Sie einen Teilpfad? Wissen Sie beispielsweise, dass Ihre Exe immer in C: \ something \ something \ oder einem Unterordner dieses Pfades sein wird? Wenn dies der Fall ist, suchen Sie in FindFirst() und FindNext() nach allen Dateien in diesem Verzeichnis und suchen Sie nach Ihrer Exe. Verwenden Sie dann CreateProcess(), wenn Sie Ihre Exe finden.

http://msdn.microsoft.com/en-us/library/aa365200%28VS.85%29.aspx zeigt, wie Sie Dateien in einem Verzeichnis auflisten. Sie müssen es ändern, um auch Unterverzeichnisse zu durchsuchen (z. B. eine rekursive Funktion erstellen).

1

Starten von Programmen und Zählen auf PATH in irgendeiner Weise gilt als unsichere Codierung. System-PATHs können mit Standorten verunreinigt werden, die nicht ordnungsgemäß gesichert sind, z. B. ein Netzlaufwerk. Der beste Weg, um eine Anwendung zu starten, besteht darin, die ausführbare Datei von genau dort zu starten, wo sie steht, und die CWD auf den Speicherort der ausführbaren Datei wie installiert zu setzen. Andernfalls könnten Sie bösartigen Code starten.

Wahrscheinlich eine Kombination von Informationen aus hier helfen, die Lage zu bekommen richtig: Detecting installed programs via registry

Greg

Verwandte Themen