WMI «установленный» запрос отличается от списка добавления / удаления программ? - PullRequest
39 голосов
/ 23 марта 2009

Попытка использовать WMI для получения списка установленных программ для Windows XP. Используя wmic, я попробовал:

wmic /output:c:\ProgramList.txt product get name,version

и я получаю список многих установленных программ, но после очистки этого списка от отображения «Установка и удаление программ» я вижу гораздо больше программ, перечисленных в графическом интерфейсе «Установка и удаление программ», чем с помощью запроса WMI. Есть ли другой WMI-запрос, который мне нужно использовать, чтобы установить остальные программы? Или есть какое-то другое место, где мне нужно искать остальное?

Кроме того, в запросе WMI перечислены две установленные программы, которых нет в программе «Установка и удаление программ». Есть идеи почему?

Ответы [ 12 ]

0 голосов
/ 24 июня 2016

Я адаптировал MS-Technet VBScript для своих нужд. Он сбрасывает Wow6432Node, а также стандартные записи в "programms.txt" Используйте его на свой страх и риск, без гарантии!

Сохранить как dump.vbs

Из командной строки введите: wscript dump.vbs

Const HKLM = &H80000002
Set objReg = GetObject("winmgmts://" & "." & "/root/default:StdRegProv")
Set objFSO = CreateObject("Scripting.FileSystemObject")

outFile="programms.txt"

Set objFile = objFSO.CreateTextFile(outFile,True)
writeList "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
writeList "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
objFile.Close 

Function writeList(strBaseKey, objReg, objFile) 
objReg.EnumKey HKLM, strBaseKey, arrSubKeys 
    For Each strSubKey In arrSubKeys
        intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, "DisplayName", strValue)
        If intRet <> 0 Then
            intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, "QuietDisplayName", strValue)
        End If
        objReg.GetStringValue HKLM, strBaseKey & strSubKey, "DisplayVersion", version
        objReg.GetStringValue HKLM, strBaseKey & strSubKey, "InstallDate", insDate 
        If (strValue <> "") and (intRet = 0) Then
            objFile.Write strValue & "," & version & "," & insDate & vbCrLf
        End If
    Next
End Function
0 голосов
/ 07 апреля 2011

Установка и удаление программ также должна изучить этот раздел реестра, чтобы найти установки для текущего пользователя:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall

Такие приложения, как Google Chrome, Dropbox или ярлыки, установленные через JavaWS (веб-запуск) JNLP, можно найти только здесь.

...