-1

我需要制作收集有关系统的基本数据的应用程序,例如操作系统版本、处理器和内存类型、有关已安装程序的数据……应用程序将用 c 编写,并且可以在 Win Server 2000 和 2003 上运行。所以我首先想到的是 WinApi,但我找不到任何关于这些东西的教程,我找到的每个教程都是关于 UserInterfaces 的,我不需要那个。

所以任何帮助将不胜感激。

编辑:下面回答了几件事,我将 WMI 与 WinApi 一起使用,但我仍然不知道如何从 Windows 上的任何 .exe 程序获取详细属性?

4

4 回答 4

2

WMI可能是您需要的一些东西。不是一个有趣的 API。Hans 提到的工具会很有用——即使您必须将生成的 C# 代码移植回 C。

以下 Win32 API 可能会对您有所帮助:

操作系统版本:GetVersionEx 和 OSVERSIONINFOEX

CPU Info: cpuid (要么用汇编写,要么调用编译器内部)

备用 CPU 信息:只需查看 HKLM\Hardware\DESCRIPTION\System\CentralProcessor 中的注册表项(每个逻辑处理器有 1 个子项,每个项都是 cpuid 返回的缓存 + 处理器速度也列出)。

内存:GlobalMemoryStatusEx

于 2010-09-06T02:18:31.520 回答
1

这不在 Winapi 中,您需要 WMI(Windows Management Instrumentation)。要开始您可以运行的查询类型,请尝试使用WMI Code Creator工具。它可以自动生成您需要的代码。不是在 C 中,您会发现 WMI 是一种相当尴尬的语言。

于 2010-09-05T21:31:35.463 回答
0

您可能还想了解《Windows Internals 》一书,这本书的作者是制作各种酷炫实用程序的同一个人。

于 2010-09-06T02:38:55.647 回答
0

对于处理器信息,请调用 GetLogicalProcessorInformation

请注意,并非所有机器都支持此功能。所以最好动态调用DLL。否则您的程序将无法在此类机器上运行。这个例子展示了如何做到这一点

于 2010-09-07T08:06:37.423 回答