c# ListView 填充当前进程信息:未针对 x64 编译时出现 PID/进程名称/路径错误
我正在运行 Windows 7 x64 机器,当我不针对 x64 进行编译时,我会遇到异常,并且我的 ListView 只会填充前两个非 x64 进程。
也就是说,我无法访问 64 位进程的 MainModule 属性来获取其完整路径。
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)我可以写一行“你无法从x86应用程序获取x64进程路径”,但我仍然不必遇到异常。我该如何防止这种情况?我可以检查特定信息的流程,以便替换文本并避免访问 MainModule 吗?
谢谢。
I'm running a Windows 7 x64 machine when I do not compile for x64 I get an exception and my ListView just get populated with the first two non x64 processes.
That is I cannot access MainModule Property of a 64 bit process to get it's full path.
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);
}
I still can make it work compiling for x64 but suppose I want to compile just for x86, how do I avoid getting the excpetion ?
1) Is there any other way to discover those processes path ?
2) I could write a line like "You cannot get x64 Process path from x86 App", but still I don't have to run into the exception. How do I prevent this ? Can I check the process for a particular info so I can replace the text and avoid accessing MainModule ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
32 位进程无法访问 64 位进程的模块。
因此必须编译 AnyCpu 才能在 x86 和 x64 环境中完全工作。
A 32 bit processes cannot access modules of a 64 bit process.
So it must be compiled for AnyCpu to be fully working in both x86 and x64 environments.