我想了解正在使用的所有程序以及正在使用的该软件的版本数。我不需要知道确切的版本号(尽管这会很好),只需能够说两个东西是不同的版本(或版本)即可。
因为我对每个程序一无所知,所以我需要以通用的方式完成此操作。这怎么能做到呢?
最佳答案
这是一个非常普遍的问题,所以我会给你一个普遍的答案。您需要执行以下操作:
- 通过调用
EnumProcesses()
枚举所有进程. - 对于每个进程 ID,
OpenProcess()
获取进程句柄。 - 每个进程句柄调用
GetModuleFileNameEx()
获取进程的主可执行文件名。 - 最后调用
GetFileVersionInfo()
也许还有它的一些 friend 来检索信息。
这将为您提供二进制版本信息,而不是营销版本。例如,Windows XP 是版本 5.1,Windows Vista 是 6.0,Windows 7 是版本 6.1。如果您需要营销版本,那么通常无法实现。
关于Windows:获取正在运行的进程的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245482/