Während Process.Kill () wurde nur ein Teil einer ReadProcessMemory- oder WriteProcessMemory-Anforderung abgeschlossen

Ich habe dieses Problem ziemlich ausführlich untersucht und kann anscheinend keine Antwort finden.

Ich weiß, dass dieOnly part of a ReadProcessMemory or WriteProcessMemory request was completed Eine Ausnahme wird ausgelöst, wenn ein 32-Bit-Prozess versucht, auf einen 64-Bit-Prozess zuzugreifen, und dasselbe für einen 64-Bit-Prozess, der einen 32-Bit-Prozess ändert.

Die Lösung für dieses Problem besteht darin, das Plattformziel in "Beliebige CPU" zu ändern. Ich habe dies versucht und leider löst dies mein Problem nicht.

Der nächste Codeblock löst immer wieder die Ausnahme aus. Das Programm, mit dem dieser Code ausgeführt wird, wird zum Öffnen von Anwendungen auf Remotecomputern verwendet und enthält eine Liste aller Prozesse, die das Programm selbst geöffnet hat, damit nicht alle Prozesse durchlaufen werden müssen.

Process processToRemove = null;
lock (_runningProcesses)
{
    foreach (Process p in _runningProcesses)
    {
        foreach (ProcessModule module in p.Modules)
        {
            string[] strs = text.Split('\\');

            if (module.ModuleName.Equals(strs[strs.Length - 1]))
            {
                processToRemove = p;
                break;
            }
        }
        if (processToRemove != null)
        {
            break;
        }
    }
    if (processToRemove != null)
    {
        processToRemove.Kill();
        _runningProcesses.Remove(processToRemove);
    }
}

Diese Prozesse können und werden höchstwahrscheinlich 32-Bit- und 64-Bit-Prozesse sein, die zusammengemischt werden.

Gibt es irgendetwas, das ich nicht tun sollte, oder gibt es nur einen besseren Weg, dies alles zu tun?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage