Ich habe dieses Dienstprogramm (exe) geschrieben, das innerhalb dieser Host-Anwendung aufgerufen werden kann. Und ich würde es vorziehen, dass das Dienstprogramm nur von der Host-Anwendung aufgerufen werden kann. Wird es von außen oder von einem anderen Host ausgeführt, sollte das Dienstprogramm sofort beendet werden.
Gibt es eine Möglichkeit, herauszufinden, welcher Prozess mein Dienstprogramm gestartet hat?
Danke für die Antworten.
Sie können die Funktion CreateToolhelp32Snapshot verwenden, um den laufenden Prozess aufzulisten Liste und dann die Funktion Process32First , um die th32ParentProcessID , welches der Bezeichner des Prozesses ist, der diesen Prozess erstellt hat (sein übergeordneter Prozess).
Siehe dieses Beispiel.
%Vor%Die schnelle Antwort auf Ihre Frage lautet: "Nun, nein, Sie können nicht verhindern, dass eine Anwendung ausgeführt wird". Wenn es eine ausführbare Datei ist, kann sie ausgeführt werden. Keine Möglichkeit, das zu stoppen.
Und wenn Sie die Anwendung nicht kontrollieren können (wie Ihre Kommentare zu zeigen scheinen), wird Gs exzellenter Vorschlag nicht funktionieren, oder? Sie haben keine Möglichkeit zu kontrollieren, was die App macht, und Sie können nicht kontrollieren, ob die App auf Ihre spezielle Befehlszeile reagiert.
Das ist also eine interessante Situation.
Der einzige Weg, den ich sehe, ist, den Zugriff auf die EXE komplett zu verhindern oder zumindest zu erschweren.
Sie könnten dies tun:
Nicht schön, aber es ist die einzige Möglichkeit, die EXE davon abzuhalten, nur zu Ihren Bedingungen und Ihren Bedingungen geführt zu werden.
Wenn diese Anwendung nur innerhalb des Hosts ausgeführt wird, fügen Sie einfach die Formulare für die Anwendung in die Hauptanwendung ein und aktivieren Sie sie wie ein anderes Formular?
Wir verwenden eine ziemlich einfache Technik, die nur ein paar Zeilen Code benötigt. Die Eltern-App und die Dienstprogramm-App verwenden einige gängige GUIID-Zeichenfolgen (im Code) und rufen RegisterWindowMessage auf, um eine Art "Hallo" -Handshake-Protokoll zu erstellen. Wenn die Dienstprogramm-App zum ersten Mal gestartet wird, wird diese Nachricht veröffentlicht. Wenn die übergeordnete App ausgeführt wird und das Dienstprogramm gestartet wurde, wird die Antwortnachricht veröffentlicht, die vom Dienstprogramm angezeigt wird und alles in Ordnung ist. Wenn nicht, wird das Zeitlimit überschritten und das Programm beendet.