【问题标题】:How to get only those software list which are in "Programs and Features" control panel?如何仅获取“程序和功能”控制面板中的那些软件列表?
【发布时间】:2021-11-02 19:12:06
【问题描述】:

这是我的 VBS 代码:

Const HKEY_LOCAL_MACHINE = &H80000002
Dim strComputer, strKeyPath
Dim objReg, strSubkey, arrSubkeys
Dim Name, Version

strComputer = "."

' Registry key path of Control panel items for installed programs
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")

objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys

'Enumerate registry keys.
For Each strSubkey In arrSubkeys
    objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath & strSubkey, "DisplayName" , Name
    If Name <> "" Then
         WScript.Echo Name&""&","
    End If
Next

WScript.Echo "Installed Programs listed successfully through Registry using VBScript."
WScript.Quit

它将给出所有软件名称列表。但我只想要那些在控制面板的程序和功能中可见的软件。

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    您可以将 shell 与 KNOWNFOLDERID 的程序和功能一起使用。

    这将为您提供您在控制面板上看到的确切列表。

    Set Shell = CreateObject("Shell.Application")
    Set Programs = Shell.NameSpace("shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}")
    For Each item In Programs.Items
        WScript.Echo item
    Next
    

    【讨论】:

    • 如何在远程机器上运行?
    • @im_mangesh CreateObject("Shell.Application", "remote-computer")
    • 出现错误““ActiveX 组件无法创建对象 Shell.Application””
    • @im_mangesh 那么您可能需要一个不同的解决方案来在问题中未说明的远程计算机上实现您想要的。
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多