c# ListView 填充当前进程信息:未针对 x64 编译时出现 PID/进程名称/路径错误

发布于 2024-12-03 16:33:05 字数 609 浏览 0 评论 0原文

我正在运行 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叹沉浮 2024-12-10 16:33:05

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文