Как получить ключи продукта (например, Adobe, Office) в Windows?

Есть несколько ответов на вопросы о том, как получить ключ продукта ОС Windows, например Получить сведения о Windows, такие как ключ продукта, имя домена, имя пользователя и т. д., но мне было интересно, как программно получить ключ продукта для части установленного программного обеспечения. Удалить ключ реестра действительно приятно, поскольку у него много атрибутов, привязанных к установленной программе, но ни один из атрибутов не связан с ключом продукта, поэтому мне было интересно, есть ли какие-то другие средства через какую-то библиотеку С# или что-то в этом роде, чтобы получить ключ продукта для произвольной части программного обеспечения и как чтобы получить его через С#.


person Kurt Wagner    schedule 04.07.2015    source источник
comment
Почему вы хотите получить ключ продукта? Большинство его применений кажутся довольно гнусными.   -  person Gul Ershad    schedule 04.07.2015
comment
Я планирую разработать приложение с открытым исходным кодом, которое выводит CSV-файл со списком установленных программ и ключей продуктов на случай, если миграция людей с Windows на Windows 10 пойдет не так, и они хотят, чтобы что-то легко откладывалось для установки программ, которые у них были ранее ( Сам лично держу в облаке такой список отсортированный по приоритету установки).   -  person Kurt Wagner    schedule 04.07.2015


Ответы (2)


Не существует стандартного способа, которым каждая программа хранит свой ключ продукта или лицензию. Например, вы можете восстановить ключ продукта Office от 2010 года и ранее, но с 2013 года я не верю, что это возможно. Многие продукты имеют сведения об активации либо в зашифрованном виде в реестре, либо с помощью облачного решения (Office 365, Adobe CC). Вы можете попытаться изучить отдельные продукты, на которые вы хотели бы ориентироваться, чтобы лучше понять, как работает каждая программа.

person Ron Brogan    schedule 04.07.2015

Вы можете открыть разные кусты реестра и выполнить рекурсивный поиск по «ключевым словам», например:

  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)
       {
          ...
       }
    }
  • Серийный
  • Код товара
  • Идентификатор цифрового продукта ....

Я думаю, вам понадобится какой-то фильтр в конце, может быть много «неправильных попаданий».

person thardes2    schedule 22.12.2015