C# ReadProcessMemory или WriteProcessMemory был выполнен только частично
Пытаюсь убивать процессы по местоположению, получается не очень...
Необработанное исключение: System.ComponentModel.Win32Exception:
Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично.
в System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
в System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)
в System.Diagnostics.Process.get_MainModule()
До этого ещё отдавало ошибку: System.ComponentModel.Win32Exception: Отказано в доступе, решилось правами администратора.
Но иногда всё равно всплывает.
Сам метод:
public static void KillProcesses(string path)
{
foreach (var pr in Process.GetProcessesByName("chrome"))
{
if (path == pr.MainModule.FileName)
{
pr.Kill();
}
}
}
Больше всего интересует именно первая ошибка, с чем это может быть связано? Если делать это всё через try-catch, софт вылетать конечно перестанет, но вот процессы убиваться тоже не будут.
Ответы (2 шт):
Да, у меня аналогичная проблема проявилась на одном из нескольких сотен компьютеров: прислали пачку файлов логов ошибок и среди них это и обнаружилось в одном файле. Первая мысль была, что это что-то аппаратно-драйверное: и возникает редко, и проблемы с чтением памяти.
Process[] processes = System.Diagnostics.Process.GetProcessesByName( "Informer" );
for ( int i=0; i< processes.Length; i++ )
{
string runningProcessFilename = processes[ i ].MainModule.FileName;
}
Процессы в моем случае могут быть запущены под сессиями других пользователей, получение данных по запущенным процессам происходит из сессии с правами администратора.
Перемещение в папку файла .exe перед запуском процесса Process.Start() помогло.
Environment.CurrentDirectory = pathToFolderWithYourProcessExe