只有一部分 ReadProcessMemory 或 WriteProcessMemory 请求已完成
本文关键字:WriteProcessMemory 请求 已完成 ReadProcessMemory 一部分 | 更新日期: 2023-09-27 17:56:05
我不想通过它的路径杀死一个进程。但是当我使用此代码时,我得到一个win32Exception。
只有一部分 ReadProcessMemory 或 WriteProcessMemory 请求已完成
我将目标版本更改为 x64,但仍然收到相同的错误。
Process[] Processes = Process.GetProcessesByName("iw4");
if (Processes.Length >= 1)
{
for (int i = 1; i < Processes.Length; i++)
{
Process Process = Processes[i];
string processPath = Process.MainModule.FileName;
if (processPath == s + "''iw4.exe")
{
if (!File.Exists(s + "''localization.txt"))
{
Log.Data("killed process!");
Process.Kill();
}
}
}
}
堆栈跟踪:
at System.Diagnostics.NtProcexssManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
at System.Diagnostics.Process.get_MainModule()
at LocalizationFix.Fix.checkLocalizationFile()
at LocalizationFix.Init.Main(String[] args)
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
问题不在于发布的代码。 它最有可能在LocalizationFix.Fix.checkLocalizationFile()
.
已发布有一个不相关的问题,因为您跳过了进程列表中的第一个条目。 C# 使用零相对索引。
也许你想要这样的东西:
foreach (var Process in Process.GetProcessesByName("iw4");
{
...
}
此外,按照惯例,局部变量名称是小写的帕斯卡大小写。 所以使用:
foreach (var process in Process.GetProcessesByName("iw4");
{
...
}