如何在 Windows 中获取产品密钥(例如 Adob​​e、Office)?

How to Get Product Keys (e.g. Adobe, Office) in Windows?

有几个关于如何获取 Windows OS 产品密钥的回答问题,例如 Get windows details like product key, domain name, user name, etc., but I was wondering how to programmatically get the Product Key for a piece of installed software. Uninstall Registry Key 非常好,因为它有很多与已安装程序相关的属性,但是none 的属性涉及产品密钥,所以我想知道是否有其他方法可以通过某些 C# 库或类似的方法来获取任意软件的产品密钥,以及如何通过 C# 获取它。

每个程序都没有存储其产品密钥或许可的标准方法。例如,您可以从 2010 年及之前恢复 Office 产品密钥,但对于 2013 年,我认为这是不可能的。许多产品的激活详细信息在注册表中加密或使用基于云的解决方案(Office 365、Adobe CC)。您可以尝试研究您想要定位的单个产品,以更好地了解每个程序的处理方式。

您可以打开不同的注册表配置单元并递归搜索它们以查找 "keywords",例如:

  var reg = Registry.LocalMachine.OpenSubKey("Software");
    SearchRecursive(reg);
    ...
    private void SearchRecursive(ReigstryKey reg)
    {
       var subkeys = reg.GetSubKeyNames();
       var values = reg.GetValueNames();
       foreach (var value in values)
       {
          ...
       }
    }
  • 连续剧
  • 产品编号
  • DigitalProductId ....

我想你最后需要某种过滤器,可能会有很多 "wrong hits"。