Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Windows中获取产品密钥(如Adobe、Office)?_C#_Registry_Product Key - Fatal编程技术网

C# 如何在Windows中获取产品密钥(如Adobe、Office)?

C# 如何在Windows中获取产品密钥(如Adobe、Office)?,c#,registry,product-key,C#,Registry,Product Key,关于如何像这样获取Windows OS产品密钥,有几个问题得到了回答,但我想知道如何以编程方式获取已安装软件的产品密钥。非常好,因为它有许多属性与已安装的程序相关联,但是这些属性都不涉及产品密钥,所以我想知道是否有其他方法可以通过一些C#库或类似的方法来获取任意软件的产品密钥,以及如何通过C#获取产品密钥。没有标准的方法可以让每个程序存储其产品密钥或许可。例如,您可以从2010年及之前恢复Office产品密钥,但对于2013年,我认为这是不可能的。许多产品的激活详细信息要么在注册表中加密,要么使

关于如何像这样获取Windows OS产品密钥,有几个问题得到了回答,但我想知道如何以编程方式获取已安装软件的产品密钥。非常好,因为它有许多属性与已安装的程序相关联,但是这些属性都不涉及产品密钥,所以我想知道是否有其他方法可以通过一些C#库或类似的方法来获取任意软件的产品密钥,以及如何通过C#获取产品密钥。

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

您可以打开不同的注册表配置单元,并在其中递归搜索“关键字”,如:

  • 连载
  • 产品ID
  • 数码产品ID

我想最后你需要某种过滤器,可能会有很多“错误点击”。

你为什么要获取产品密钥?大多数情况下,它的使用似乎相当邪恶。我正计划开发一个开源应用程序,输出一个csv,其中包含已安装程序和产品密钥的列表,以防Windows迁移到Windows 10时出现问题,并且他们希望能够轻松推迟安装以前的程序(我个人在云中按安装优先级排序保存了这样一个列表)。
  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)
       {
          ...
       }
    }