PowerShell 实现 Windows 应用路径的自动化枚举

冷炫風刃

冷炫風刃

2026-06-29

677人浏览

原创

powershell通过注册表app paths、扫描安装目录和解析appx包三类数据源高效枚举windows已安装应用的可执行路径。首先从hklm...\app paths提取win32主程序路径,其次扫描programfiles、localappdata等目录获取便携软件,最后通过get-appxpackage构造shell:appsfolder路径启动uwp/msix应用,合并去重后导出csv或json。

powershell 可以高效枚举 windows 上已安装应用的可执行路径,核心在于结合注册表、程序文件目录和现代应用清单(如 appx)三类数据源。关键不是“找所有 .exe”,而是“找用户能实际启动的、有明确入口的应用路径”。

从注册表读取传统桌面应用路径

多数 Win32 应用会在注册表中登记其主可执行文件,位置集中在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
该键下每个子项名通常是程序名(如 notepad.exe),默认值((default))即为完整路径。

执行以下命令可批量提取:

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\*' -ErrorAction SilentlyContinue |
  Where-Object { $_.PSChildName -match '\.exe$' } |
  ForEach-Object {
    [PSCustomObject]@{
      Name = $_.PSChildName
      Path = $_.'(default)'
      Type = 'Win32 (App Paths)'
    }
  }

扫描常见安装目录补充遗漏项

部分绿色软件或便携版不会写注册表,需主动扫描典型路径。重点关注:

  • %ProgramFiles%%ProgramFiles(x86)% 下的 *\*.exe
  • %LocalAppData%\Programs\*(如 Electron 应用)
  • %AppData%\Roaming\* 中带 GUI 的工具(如 Slack、Zoom)

示例(仅返回有图标或版本信息的可执行文件,避免杂项):

$dirs = "${env:ProgramFiles}", "${env:ProgramFiles(x86)}", "$env:LOCALAPPDATA\Programs"
$paths = @()
foreach ($dir in $dirs) {
  if (Test-Path $dir) {
    Get-ChildItem $dir -Filter "*.exe" -Recurse -ErrorAction SilentlyContinue -File |
      Where-Object { try { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).ProductName } catch {} } |
      ForEach-Object {
        $ver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName)
        [PSCustomObject]@{
          Name = $ver.ProductName -replace '\s+\d+(\.\d+)*$', ''
          Path = $_.FullName
          Type = 'Portable / Installed EXE'
        }
      }
  }
}
$paths | Sort-Object Name -Unique

获取 UWP / MSIX 应用的启动入口

现代应用不提供直接 .exe 路径,但可通过 Get-AppxPackage 获取包信息,并用 Get-AppxPackageManifest 提取 Application 节点中的 Executable 属性(若存在)。更通用的方式是构造 shell:AppsFolder 协议路径:

讯飞听见 Win
讯飞听见 Win

PHP中文网为您提供讯飞听见Windows客户端官方下载与安装部署指南。作为科大讯飞旗下的智慧办公SaaS平台,我们为您整理了通过官方渠道安全获取最新完整版安装包(支持Win7至Win11系统)的核心入口。同时,详细梳理了客户端的核心功能与使用技巧,涵盖实时录音转文字、音视频文件批量导入转写、AI智能会议纪要生成、多语种实时翻译及屏幕录制等。

下载
Get-AppxPackage | ForEach-Object {
  $packageFamilyName = $_.PackageFamilyName
  $appUserModelId = "$packageFamilyName!App"
  [PSCustomObject]@{
    Name = $_.Name
    Path = "shell:AppsFolder\$packageFamilyName!App"
    Type = 'UWP / MSIX'
    AUMID = $appUserModelId
  }
}

该路径可在资源管理器中打开,也可传给 Start-Process 启动(例如:Start-Process "shell:AppsFolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge")。

合并去重并导出结构化结果

将三类来源统一为对象数组后,按 Name + Path 去重,保留最可信来源(App Paths > Manifest > 扫描目录),并支持导出为 CSV 或 JSON:

$allApps = @($regApps + $scannedApps + $uwpApps) |
  Sort-Object Name, Path |
  Get-Unique -AsString
<p>$allApps | Export-Csv -Path "$env:TEMP\AppPaths.csv" -NoTypeInformation -Encoding UTF8</p><h1>或转为 JSON 供其他脚本消费</h1><p>$allApps | ConvertTo-Json -Depth 3 | Out-File "$env:TEMP\AppPaths.json" -Encoding UTF8
</p>

注意:管理员权限非必需,但会影响 HKLM 注册表读取完整性;普通用户运行时建议同时检查 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

2469

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

1970

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1195

3

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1397

5

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.08

2856

4

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

1132

3

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

2023.08.28

2212

4

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.30

2887

5

Window.setInterval()方法
Window.setInterval()方法

Window.setInterval() 方法的基本语法是“window.setInterval(function, delay)”,function是要重复执行的函数或代码块,delay是每次执行之间的时间间隔,以毫秒为单位。本专题为大家提供Window.setInterval()相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

349

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程