私はこの問題をかなり広範囲に調査してきましたが、答えが見つからないようです。
Only part of a ReadProcessMemory or WriteProcessMemory request was completed
32 ビット プロセスが 64 ビット プロセスにアクセスしようとすると例外がスローされ、64 ビット プロセスが 32 ビット プロセスを変更しようとすると例外がスローされることがわかっています。
この問題の解決策は、プラットフォーム ターゲットを「任意の CPU」に変更することです。私はこれを試しましたが、残念ながらこれで問題は解決しません。
コードの次のブロックは、例外をスローし続けるものです。このコードを実行するプログラムは、リモート コンピューターでアプリケーションを開くために使用され、プログラム自体が開いたすべてのプロセスのリストを保持するため、すべてのプロセスをループする必要はありません。
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);
}
}
これらのプロセスは、32 ビットと 64 ビットを混在させることができます。
私がやるべきではないことはありますか、それともこれらすべてを行うためのより良い方法はありますか?