如何从 Get-ChildItem 获取所有可执行文件的路径

汤姆·M

我目前正在尝试获取所有已安装应用程序的列表,并希望构建一个可以启动这些应用程序的功能。

我正在使用这些 PowerShell 命令:

gci HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | % { Get-ItemProperty $_.PsPath } | Select DisplayName,InstallLocation

gci HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | % { Get-ItemProperty $_.PsPath } | Select DisplayName,InstallLocation

为了ConvertTo-Json获得一个好的标准输出,我可以使用。现在,这只给了我没有任何可执行文件的 InstallPath。

有没有简单的方法来获取列表中应用程序的主要可执行文件?

预期结果(键名无关紧要):

    // ...
    {
        "DisplayName":  "Microsoft Edge",
        "InstallLocation":  "C:\\Program Files (x86)\\Microsoft\\Edge\\Application",
        "LaunchApplication": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\msedge.exe",
    },
    {
        "DisplayName":  "Audacity 2.4.2",
        "InstallLocation":  "C:\\Program Files (x86)\\Audacity\\",
        "LaunchApplication": "C:\\Program Files (x86)\\Audacity\\audacity.exe"
    },
    // ...
亚伯拉罕·齐纳拉

就像其他人在评论中指出的那样,没有获取某些程序的可执行路径的常规方法。

为了回答您构建应用程序启动方法的间接问题,我们可以利用一些东西对我们来说幸运的是,PowerShell 有一个Get-StartAppscmdlet 可以生成当前用户安装的应用程序的输出:


Name                                                 AppID
----                                                 -----
3D Viewer                                            Microsoft.Microsoft3DViewer_8wekyb3d8bbwe!Microsoft.Microsoft3DViewer
AdGuard                                              AdGuard
Adobe Acrobat DC                                     {6D809377-6AF0-444B-8957-A3773F02200E}\Adobe\Acrobat DC\Acrobat\Acrobat.exe
Battle.net                                           {7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Battle.net\Battle.net Launcher.exe
Blend for Visual Studio 2022                         Blend.d58ce8bb
Calculator                                           Microsoft.WindowsCalculator_8wekyb3d8bbwe!App
Calendar                                             microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar

显示 2 个属性:

  • 姓名
  • 应用程序 ID

shell:这变得很重要,因为 AppID 是执行/启动程序所需的值。鉴于上述输出Get-StartApps,您可以通过将 AppID 传递给 来启动“Adobe Acrobat DC” shell:\AppsFolder\"AppID"

Start-Process shell:AppsFolder\"{6D809377-6AF0-444B-8957-A3773F02200E}\Adobe\Acrobat DC\Acrobat\Acrobat.exe"

使用@zett42 的方法,我们可以查询您的开始菜单,以及系统开始菜单文件夹路径,以便.lnk使用 WScript COM 对象检索其目标路径:

$paths = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs","$env:APPDATA\Microsoft\Windows\Start Menu"
Get-ChildItem -Path $paths -Filter "*.lnk" -File -Recurse | 
    ForEach-Object -Begin {
        $WScriptShell = New-Object -ComObject "WScript.Shell"
    } -Process {
        [PSCustomObject]@{
            Name = $_.BaseName
            Path = $WScriptShell.CreateShortcut($_.FullName).TargetPath
        }
    } -End {
        [void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($WScriptShell) #release COM object
    }

这将输出:

Name                         Path
----                         ----
Adobe Acrobat DC             C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe
Blend for Visual Studio 2022 C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Blend.exe
Firefox                      C:\Program Files\Mozilla Firefox\firefox.exe
Google Chrome                C:\Program Files\Google\Chrome\Application\chrome.exe
Microsoft Edge               C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
TechPowerUp GPU-Z            C:\Program Files (x86)\GPU-Z\GPU-Z.exe

不完全确定这是您所追求的,但它可能对其他人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取python可执行文件的文件路径

如何使用 dlopen() 获取可执行文件路径

如何获取Get-ChildItem处理不间断空间的路径

如何为路径上的所有可执行文件编写bash完成脚本?

如何使用Get-ChildItem获取特定文件

如何使用Get-ChildItem仅获取目录?

如何导出所有服务的列表及其在Microsoft Windows 7上可执行文件的路径?

在HPUX上,如何列出所有正在运行的进程的可执行文件的完整路径?

如何在Go中的$ PATH中获取可执行文件的完整路径

如何在运行时获取Node.js可执行文件的路径

使用launch4j时如何获取可执行文件的路径?

如何仅获取当前可执行文件路径的目录部分?

如何获取作为 FlatPak 应用程序启动的窗口的可执行文件路径?

如何更改可执行文件的路径?

如何扫描可执行文件的搜索路径

如何从路径调用可执行文件?

如何清除Bash可执行文件路径的缓存?

如何获取可执行文件的完整路径,该可执行文件是从%PATH%中的目录之一调用的

Get-ChildItem -Exclude参数如何工作?

PowerShell Get-ChildItem如何捕获异常

如何获取get-childitem以对多种文件类型进行过滤?

如何抑制pyinstaller生成的可执行文件窗口中的所有警告

如何列出Linux中的所有可执行文件(目录,子目录,$ PATH)?

如何在Linux上列出可执行文件的所有正在运行的实例?

CMake-如何创建可执行文件,但不添加到“所有”目标?

如何显示Linux中可执行文件使用的所有共享库?

如何为所有用户静默安装NSIS可执行文件

如何转储可执行文件的所有函数名称?

ROS如何找到一个包的所有可执行文件?