x86 - 使用 C++ 列出 Windows 上所有已安装的程序

标签 x86 64-bit installed-applications

我遇到了这个问题。
我必须列出 Windows 操作系统(x86 和 x64)上所有已安装的程序,包括 Internet Explorer 和其他 Windows 组件。

我尝试了一些解决方案:

  • 使用 WMI 查询 "SELECT * FROM Win32_Product" ,但结果没有Internet Explorer,并且在x64上,它没有列出所有程序。
  • 阅读注册表:我尝试阅读:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall在 x86 上,但未列出 IE。

  • 总结,我需要列出 x86 和 x64 操作系统上所有已安装的程序和 Windows 组件(如 IE)。

    谁能帮我?
    非常感谢。

    最佳答案

    试试这个 WMI 查询脚本,看看它是否也缺少您的 x64 内容。如果没有,则在 x64 命令 shell 下重试。我怀疑您正在以 32 位模式执行程序:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.CreateTextFile("c:\scripts\software.tsv", True)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery _
     ("SELECT * FROM Win32_Product")
    objTextFile.WriteLine "Caption" & vbtab & _
    "Description" & vbtab & "Identifying Number" & vbtab & _
    "Install Date" & vbtab & "Install Location" & vbtab & _
    "Install State" & vbtab & "Name" & vbtab & _
    "Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _
     & "Version"
    For Each objSoftware in colSoftware
     objTextFile.WriteLine objSoftware.Caption & vbtab & _
     objSoftware.Description & vbtab & _
     objSoftware.IdentifyingNumber & vbtab & _
     objSoftware.InstallLocation & vbtab & _
     objSoftware.InstallState & vbtab & _
     objSoftware.Name & vbtab & _
     objSoftware.PackageCache & vbtab & _
     objSoftware.SKUNumber & vbtab & _
     objSoftware.Vendor & vbtab & _
     objSoftware.Version
    Next
    objTextFile.Close
    

    来源:
    Enumerating Installed Software

    关于x86 - 使用 C++ 列出 Windows 上所有已安装的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15997929/

    相关文章:

    ubuntu - assembly 模数

    assembly - 运行用 NASM 编写的 Win32 应用程序导致 'This app cant run on your pc' 错误

    assembly - 堆栈中的返回地址是如何指定的?

    android - 如何从另一个应用程序启动应用程序?

    windows - 扫描 Windows 上已安装的软件

    c - 使用 LDT(本地描述符表)

    mysql - 使用 64 位机器托管 Web 应用程序的好处

    android - GCC/ARM 中带有 long long 的子结果错误

    c++ - 64 位与 32 位环境中 C++ 数组的大小

    android - PackageManager.getInstalledPackages() 返回空列表