Я пытаюсь составить список установленного программного обеспечения на рабочей станции. После некоторых исследований я решил использовать информацию из следующего раздела реестра для составления списка.
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 приложения. Я читал, что это связано с тем, что приложения и патчи используются по-разному. Это правда? Что еще более важно,
- Какие из двух записей действительны? (или более действительный?)
- Какой из них используется в списке «Установка и удаление программ»?
- Информация из двух ключей объединена? Если да, то как?
- Любые другие советы / советы / предложения?
Спасибо !!