Windows下获取已安装软件列表的几种高效脚本方法
在日常电脑维护、系统迁移或软件管理中,我们经常需要获取Windows系统上已安装软件的完整列表。本文将介绍几种通过脚本快速获取Windows安装软件信息的方法,适合不同技术水平的用户。
为什么要获取已安装软件列表
获取已安装软件列表在以下场景非常有用:
- 重装系统前备份软件清单
- 批量管理多台电脑的软件安装情况
- 排查软件冲突问题时记录环境
- 进行软件资产盘点和管理
方法一:使用PowerShell脚本(推荐)
PowerShell是Windows自带的强大工具,可以轻松获取软件信息。

基础版PowerShell命令
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize
这条命令会列出64位系统上安装的大多数软件(32位和64位)。
增强版PowerShell脚本
$software = @()
$paths = @(
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
foreach ($path in $paths) {
$items = Get-ItemProperty $path
foreach ($item in $items) {
if ($item.DisplayName) {
$software += [PSCustomObject]@{
Name = $item.DisplayName
Version = $item.DisplayVersion
Publisher = $item.Publisher
InstallDate = $item.InstallDate
InstallLocation = $item.InstallLocation
}
}
}
}
$software | Sort-Object Name | Format-Table -AutoSize
这个脚本会:
- 检查32位和64位的软件注册表位置
- 提取更完整的软件信息
- 按软件名称排序输出
方法二:使用WMIC命令
对于喜欢命令行的用户,WMIC是一个不错的选择:
wmic product get name,version,vendor,installdate /format:csv
注意:WMIC只能获取通过MSI安装的软件,可能会遗漏一些程序。
方法三:VBScrIPt方案
如果你需要兼容旧系统,可以使用VBScript:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("installed_software.txt", True)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Product")
For Each objItem in colItems
objFile.WriteLine "Name: " & objItem.Name
objFile.WriteLine "Version: " & objItem.Version
objFile.WriteLine "Vendor: " & objItem.Vendor
objFile.WriteLine "Install Date: " & objItem.InstallDate
objFile.WriteLine "----------------------------------------"
Next
objFile.Close
WScript.Echo "软件列表已保存到 installed_software.txt"
将上述代码保存为.vbs文件后双击运行,会在当前目录生成installed_software.txt文件。
方法四:批处理脚本组合方案
结合注册表查询和WMIC的批处理脚本:
@echo off
setlocal enabledelayedexpansion
echo 正在获取已安装软件列表...
echo ----------------------------- > installed_apps.txt
echo 通过注册表获取的软件列表 >> installed_apps.txt
echo ----------------------------- >> installed_apps.txt
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s | find "DisplayName" >> installed_apps.txt
echo. >> installed_apps.txt
echo ----------------------------- >> installed_apps.txt
echo 通过WMIC获取的软件列表 >> installed_apps.txt
echo ----------------------------- >> installed_apps.txt
wmic product get name,version >> installed_apps.txt
echo 列表已保存到 installed_apps.txt
pause
高级技巧:导出为CSV并分析
对于需要进一步分析的情况,可以将结果导出为CSV格式:
$software = @()
$paths = @(
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
foreach ($path in $paths) {
$items = Get-ItemProperty $path
foreach ($item in $items) {
if ($item.DisplayName) {
$software += [PSCustomObject]@{
Name = $item.DisplayName
Version = $item.DisplayVersion
Publisher = $item.Publisher
InstallDate = $item.InstallDate
InstallLocation = $item.InstallLocation
UninstallString = $item.UninstallString
}
}
}
}
$software | Sort-Object Name | Export-Csv -Path "software_list.csv" -NoTypeInformation -Encoding UTF8
导出的CSV文件可以用Excel打开并进行排序、筛选等操作。
常见问题解决
-
为什么有些软件没有显示?
- 某些便携版软件可能不会在注册表中注册
- 用户级安装的软件可能位于HKCU注册表分支
- 可以添加查询
HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*来获取当前用户安装的软件
-
如何获取更详细的软件信息?
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName } | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, InstallLocation, URLInfoAbout, HelpLink, EstimatedSize | Sort-Object DisplayName | Format-Table -AutoSize -
如何远程获取其他电脑的软件列表? 使用PowerShell远程功能:
Invoke-Command -ComputerName 远程电脑名 -ScriptBlock { Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion }
最佳实践建议
- 定期备份软件列表,建议每月一次
- 将脚本设置为计划任务自动运行并保存结果
- 对于企业环境,可以考虑使用专业的资产管理工具
- 结合安装日期信息可以追踪软件变更历史
通过以上脚本,你可以轻松获取Windows系统上安装的软件清单,无论是用于个人电脑维护还是企业IT管理,这些方法都能大大提高工作效率。
文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

还没有评论,来说两句吧...