c # ListView, заполненный текущей информацией о процессах: PID / имя процесса / ошибка пути, когда не скомпилировано для x64 - PullRequest
0 голосов
/ 09 сентября 2011

Я использую машину Windows 7 x64, когда не компилирую для x64, я получаю исключение, и мой ListView просто заполняется первыми двумя процессами, отличными от x64.

То есть я не могу получить доступ к свойству MainModule64-битного процесса, чтобы получить его полный путь.

foreach(Process p in listaProcessi) 
{
    tempItem = new ListViewItem(p.Id.ToString());
    tempItem.SubItems.Add(p.ProcessName);
    tempItem.SubItems.Add(p.MainModule.FileName);
    processiListView.Items.Add(tempItem);
}

Я все еще могу заставить его работать компиляцией для x64, но предположим, что я хочу компилировать только для x86, как мне избежать получения исключения?

1) Есть ли другой способ обнаружить путь к этим процессам?

2) Я мог бы написать строку типа «Вы не можете получить путь к процессу x64 изПриложение x86 ", но все же мне не нужно сталкиваться с исключением.Как мне предотвратить это?Могу ли я проверить процесс на наличие определенной информации, чтобы я мог заменить текст и избежать доступа к MainModule?

Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2011

32-битные процессы не могут получить доступ к модулям 64-битного процесса.

Таким образом, он должен быть скомпилирован, чтобы AnyCpu полностью работал как в среде x86, так и в среде x64.

...