C # Tylko część żądania ReadProcessMemory lub WriteProcessMemory została zakończona podczas Process.Kill ()
Badałem ten problem dość szeroko i nie mogę znaleźć odpowiedzi.
Wiem, żeOnly part of a ReadProcessMemory or WriteProcessMemory request was completed
wyjątek jest generowany, gdy proces 32-bitowy próbuje uzyskać dostęp do procesu 64-bitowego i ten sam dla 64-bitowego modyfikowania procesu 32-bitowego.
Rozwiązaniem tego problemu jest zmiana Target Target na „Any CPU”. Próbowałem tego i niestety nie rozwiązuje to mojego problemu.
Następny blok kodu jest tym, co wciąż rzuca wyjątek. Program uruchamiający ten kod jest używany do otwierania aplikacji na komputerach zdalnych i przechowuje listę wszystkich procesów, które sam program otworzył, dzięki czemu nie muszę przechodzić przez wszystkie procesy.
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);
}
}
Te procesy mogą i najprawdopodobniej będą 32-bitowe i 64-bitowe.
Czy jest coś, co robię, czego nie powinienem robić, czy jest po prostu lepszy sposób na zrobienie tego wszystkiego?