我一直在非常广泛地研究这个问题,似乎找不到答案。
我知道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 位混合在一起的。
有什么我不应该做的事情,还是有更好的方法来做这一切?