Prozess beenden ""ohne Handel""
-
Marc_c schrieb:
D.h. ich habe keinen
Möglichkeit an das Hanbdel zu kommen über
CreateProzess() oder ShellExecuteEX() im herkömmlichen
Sinne.Gut ich hatte gelese
Oli dachte Marc_c schrieb:
Ich habe ein CreateProzess() oder ShellExecuteEX() im herkömmlichen Sinne.
Naja, da kann ich dir wohl nicht helfen sry.
-
Meinen Rechner zu pulverisieren. Hmm mag seltsam klingen
aber etwas der Art hat der Prozess vor. Die Applikation
selber ist von mir könnte also einen Interpreter für eine
solche "Bitte" sich zu beenden einbauen.Es geht sich darum das der Prozess auf auf jeden Fall beendet
werden muss wenn gewisse randkriterien (hat nichts mit dem
Prozess zu tun der beendet werden soll) erfüllt sind.
Dann würde auch der Holzhammer reichen. Komme was wolle so zu sagen.Der Prozess selber überwacht meine sensiblen Daten. Treffen
jedoch A und B zusammen muss der Prozess auf jeden Fall von außen
(einem anderen Programm) beendet werden.Randbedingung ist es das die Überwachung unabhängig in einem anderen
Prozess/Anwendung stattfindet. Also muss ich es irgendwie hin bekommen.Es sind keine "File-Hooks" auf meine Daten da also egal wie ich den
Prozess beende ich würde Sie nicht in Gefahr bringen wenn ich den
Prozess "unsauber" beende.Hätte nicht gedacht das es so schwierig wird einen Prozess zu beenden
wenn ich ehrlich bin
Würde ich also den Prozess bitten sich zu beenden müsste ich also
mit SendMessage() arbeiten oder?Wie gesagt ich habe auf beide Quellcodes vollen zugriff.
-
Was ist denn so gefährlich daran, wenn dein Programm A beobachten kann, was dein Programm B gerade machen will?
Aber wenn du in der Lage bist, beide Programme anzupassen, brauchst du den Holzhammer bestimmt nicht. Du mußt dir nur eine Nachricht anlegen, über die sie miteinander kommunizieren können (RegisterWindowMessage()) und dann in Programm A darauf reagieren, daß diese Nachricht ankommt. Programm B sendet diese Nachricht, nachdem es den Störenfried entdeckt hat (oder prophylaktisch an alle Fenster) und hofft anschließend auf das beste.
-
Trotzdem würde mich die Holzhammer Methode ebenso interessieren.
Unter welchen Stichwörtern kann ich mich erkundigen wie ich
die Variante via "RegisterWindowMessage()" realisiere?P.S. ich lese da was von 'Window' heißt das soviel wie das
etwas an die Form sende? Die existiert nämlich nicht.
Beide Anwendungen sind nur Prozesse und keine Form-Anwendungen
-
Marc_C schrieb:
P.S. ich lese da was von 'Window' heißt das soviel wie das
etwas an die Form sende? Die existiert nämlich nicht.
Beide Anwendungen sind nur Prozesse und keine Form-AnwendungenWenn du keine Fenster hast, nehmen die Programme höchstwahrscheinlich auch keine Fensternachrichten entgegen. Da müsstest du dir eine eigene Synchronisation aufbauen, z.B. auf Basis von Events und Mutexes.
(aber darum hatte ich ja vorhin gefragt, auf welche Art du das zu beendende Zielprogramm findest)PS: Für die Holzhammer-Methode (TerminateProcess()) benötigst du den Prozess-Handle.
-
Hmm ich hätte jetzt gesagt über den Prozessnamen ohne tiefer darüber nachzudenken.
Ich kann die WinAPI ja dazu überreden mir alle aktiven Prozesse anzeigen zu lassen
und da interpretiere ich jetzt hinein dann bekomme ich auch den "Prozessnamen"Ich glaube da würde ich vorher noch eine Socketverbindung aufbauen

Da kenne ich mich wenigstens mit aus... obwohl mir da wieder Begriffe wie Firewall
einfallen die mich da stören würden. Wo ich viel testen müsste.Kann ich mir das Handel nicht über den Prozessnamen holen? Virenscanner können das ja auch

-
Hmm unter UNIX/Linux könnte man den Prozess einfach über die PID kicken
und an die zukommen ist ja recht einfach. Es muss doch eine Möglichkeit geben unter Windows anhand des Prozessnamens den Prozess zu "kicken".
-
-
Sorry, weiß nicht, ob dir das was hilft, aber unter der Konsole (ja bin ein "alter" Konsolenfreak (16 Jahre)) konnte ich immer mit einem gewissen Befehl (k.A. wie der noch lautete) einen Befehl starten. Da du nun ja Zugriff auf den Quelltext hast, öffnest du einfach ein Microsoft Utility namens "kill", musst e mal googeln. Den kopierst in c:\windows\system32, das übliche halt. Dem gibste dann den Parameter -f (force) mit, und da du ja den Programmnamen weißt (hast ja du programmiert) kannste nun das Programm zwingen.
Ich glaube, das ist zwar nicht genaus das was du gesucht hast, wäre aber vielleicht eine Möglichkeit!
-
geeky schrieb:
http://msdn2.microsoft.com/en-us/library/ms682623(VS.85).aspx
Na das sieht auf den ersten Blick doch gut aus.
Werde mir das Morgen mal zu Gemüte führen
thx