@echo off & setlocal enabledelayedexpansion
title 已安装程序列表获取脚本
:: 友情提醒:此脚本获取的已安装程序列表,仅针对正常安装的程序,那些绿色版的不需要安装的软件是获取不到的
:: 有些已安装程序,虽然在注册表有相关信息,但安装时没有向注册表中写入更多的信息,所以在日志中可能会出现“(无)”的标示
:: 部分已安装程序任何信息都没有的,将直接忽略,不在日志中列出。
:: 设置日志文件保存路径,不存在时会自动创建
set LogSaveDir=D:\MyLog
:: 设置要获取的信息
:: Title变量为日志中各项标题名,GetType变量为要获取的各项类型(参考注册表)
:: 注册表路径参考信息 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
:: 当前已定义的Title和GetType上下变量对应的项目为:名称,版本,发布者,安装路径,安装日期,卸载程序,支持网站
:: 自行增减时,请保证Title和GetType上下变量对应。
set Title=Name,Version,Publisher,InstallLocation,InstallDate,UninstallString,ServiceSupport
set GetType=DisplayName,DisplayVersion,Publisher,InstallLocation,InstallDate,UninstallString,URLInfoAbout
::以下为代码执行区,请勿随意修改,以免出错
set UnKey=Microsoft\Windows\CurrentVersion\Uninstall
echo 正在努力获取本机已安装程序列表,请稍后。。。
(echo !Title:,=^|^|^|^|!
for /f "delims=" %%i in ('reg query "HKLM\SOFTWARE\%UnKey%"') do (
set "Type$=" & set "Unknow="
for %%a in (%GetType%) do (
set "%%~a="
for /f "skip=2 tokens=2* delims= " %%j in