Повторяющиеся записи в разделе реестра для удаления при составлении списка установленного программного обеспечения - PullRequest
3 голосов
/ 14 апреля 2010

Я пытаюсь составить список установленного программного обеспечения на рабочей станции. После некоторых исследований я решил использовать информацию из следующего раздела реестра для составления списка.

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

Это был хороший источник, в котором также перечислены элементы, которые не перечислены с помощью класса WMI Win32_Products. Одна странность, с которой я столкнулся, заключается в том, что есть несколько «дублирующих» записей с одинаковым отображаемым именем, записанных в другом разделе реестра. Например, вот ключи для Windows Media Player:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows Media Player]
"DisplayName"="Windows Media Player 11"
"UninstallString"="\"C:\\Program Files\\Windows Media Player\\Setup_wm.exe\" /Uninstall"
"DisplayIcon"="C:\\Program Files\\Windows Media Player\\wmplayer.exe"
"ParentKeyName"=""
"ParentDisplayName"=""
"NoModify"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\wmp11]
"DisplayName"="Windows Media Player 11"
"UninstallString"="\"C:\\WINDOWS\\$NtUninstallwmp11$\\spuninst\\spuninst.exe\""
"TSAware"=dword:00000001
"NoModify"=dword:00000001
"InstallDate"="20090325"
"Publisher"="Microsoft Corporation"
"NoRepair"=dword:00000001
"HelpLink"="http:"
"URLInfoAbout"="http:"
"SystemComponent"=dword:00000001

Существуют также похожие и другие, где одна из записей является GUID приложения. Я читал, что это связано с тем, что приложения и патчи используются по-разному. Это правда? Что еще более важно,

  • Какие из двух записей действительны? (или более действительный?)
  • Какой из них используется в списке «Установка и удаление программ»?
  • Информация из двух ключей объединена? Если да, то как?
  • Любые другие советы / советы / предложения?

Спасибо !!

1 Ответ

2 голосов
/ 19 мая 2010

Я нашел ответ на это. Хотя не уверен, что это будет на 100% правильно. Во-вторых, указанный выше раздел реестра имеет значение реестра "SystemComponent" = dword: 00000001 ". Это значение используется для скрытия элементов от ARP (Установка и удаление программ). Я могу игнорировать любой ключ реестра, содержащий это значение. Кажется, до сих пор работает. Второй раздел реестра содержит некоторую полезную информацию, поэтому я не уверен, как это можно объединить, но пока это нормально для списка.

...