我想要获取计算机上已安装的所有 Microsoft 软件的列表。我认为这可以完成这项工作,但问题是我需要有已安装的 Microsoft 应用程序的序列号。
是否有任何 OS SDK 或第三方工具可以实现该功能?
答案1
答案2
由于您标记了此 C#,我将假设您想要实际创建自己的程序来检索此信息。完全可以(实际上相当容易)创建自己的程序来列出计算机上安装的所有软件,并检索产品密钥(如果适用)。
大多数软件出版商都有自己的方式在系统某处(通常埋在注册表中)对产品序列号进行编码,因此滚动自己的程序的一个缺点是您必须维护几种不同的算法来解码各种产品密钥。
我上次为自己的程序寻找解码微软产品密钥的算法是在很久以前,但我很难找到任何互联网上的算法。我最终偶然发现了 Pete 列出的 Magical Jelly Bean Keyfinder 及其源代码,该源代码位于 SourceForge 上(似乎这个项目后来演变成魔法钥匙查找器)。它是用 Pascal 编写的,而我当然不是 Pascal 程序员,但我设法在一个下午内(包括通常的中断$DayJob
)将它转换为 C#,而没有任何实际问题。
我发现了一个非常重要的事情,无论您是开发自己的软件还是使用其他密钥查找软件,这一点都很重要。如果软件已预先安装在机器上(例如 OEM Windows),则返回的产品密钥是 OEM 产品密钥,而不是产品的实际密钥。您的安装媒体将不会接受此产品密钥,因为它来自不同的分发渠道。
如果你认为在所有计算机上运行一个程序可以节省一些时间,因为不必手动记录产品密钥,我想你会失望的。就像我说的,每个软件发行商的做法都不一样,没有标准。当计算机出现故障后重新安装软件时,程序很可能没有解码某个软件的产品密钥,而这个软件肯定是最重要的。
确实没有什么可以替代您手动输入许可证信息并由其跟踪您的使用情况的专用软件。
答案3
我个人使用 MSKeyViewer Plus,它是免费软件,似乎非常适合我的需求。希望这能有所帮助。