如何将每个程序列表添加到Windows 95-windows 10的文本文件中。控制面板中的卸载程序没有旧操作系统的版本和发布者,并且wmic不显示每个节目。甚至卸载注册表,我认为它将是我的救星,并没有列出每个程序。我可以看到它与卸载程序选项卡之间的差异。 Powershell等不在议事日程中,因为它相对较新。
答案 0 :(得分:0)
90年代的注册表卸载注册要求只是显示名称和开始卸载的命令。 Windows 2000添加了对更多值的支持,并在新UI中公开了它们,但它们仍然是可选的。近年来,其中一些成为通过Windows徽标测试的要求,但对于未经认证的应用程序,它们仍然是可选的,因此无法保证卸载密钥包含每个条目的版本/发布者信息。便携式应用程序未在注册表中列出,因此如果您需要清点所有内容,则需要检查所有exe文件并忽略注册表。
支持一切回Win95 RTM将是艰难的,因为除了批处理文件之外什么都没有作为脚本选项。 VBScript是一个可选组件,通常与IE 4一起安装,我甚至不记得是否可以在这些系统上获得Powershell。
我不认为可以使用简单的批处理文件提取版本信息,您可能需要第三方工具的帮助。第三方工具的问题是它们中的很多都依赖于Microsoft CRT run-time .DLL和Windows 95 RTM没有开箱即用,甚至没有msvcrt.dll。
如果您可以提高Win95的安装Windows Scripting Host的要求(可再发行或IE4的一部分),那么您可以编写一个VB / Jscript文件,该文件使用FileSystemObject来遍历每个驱动器上的整个目录树,并且{来自.exe文件的{3}}。
如果这是不可接受的,那么您需要尝试找到可以提取版本信息的工具。有一个名为filever.exe get version information的Microsoft工具,但我不知道它是否适用于Win95和NirSoft工具listed here,但我不确定它是否支持stdout重定向命令行(但它是开源的,所以你可以根据需要修复它)。即使您找到合适的工具,您仍然需要遍历目录树以查找.exe文件,当您仅限于command.com及其DOS兼容批处理时,这将不会很有趣。
我的建议是编写一个新的应用程序。我不建议使用.NET语言编写它,因为你将处理版本1-4,默认情况下它不会安装在XP及更旧版本上。
我看到它的方式,如果您自己编写它,您有3个选项:Visual Basic 6,Delphi(旧的,可能是v3或更旧版本)或C / C ++。
对于C / C ++,任何版本的Microsoft Visual C ++或MinGW / GCC都可以,但是越旧越好,你不能链接或使用任何C运行时库的东西(你可能会使用静态链接与MinGW但是不是最新版本的Visual Studio)。如果我这样做,我将使用Visual Studio 6或2003并使用here& /Zl。如果您需要,可以/NODEFAULTLIB multiple。如果您使用任何最新版本的Visual Studio,则必须手动将文件十六进制编辑为small standalone CRT libraries以上的任何旧版本。
实际实现需要在其他系统上的Windows 95/98 / ME和FindFirstFile W 上调用make it run(和朋友)来遍历目录树和FindFirstFileA(和朋友们)获取版本信息。
如果您感觉有点想象,可以过滤掉Microsoft签署的%WinDir%中的文件。祝你好运......
答案 1 :(得分:0)
以下的一些组合:
枚举HKEY_CURRENT_USER\Software\Microsoft\CurrentVersion\Uninstall
和HKEY_LOCAL_MACHINE\Software\Microsoft\CurrentVersion\Uninstall
的注册表。并且可能在64位操作系统上HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
(可能重复)。以下是控制面板“程序和功能”部分中显示的已安装程序的列表。请注意,某些条目是直截了当的,并且包含您想要的大部分数据。其他是GUID - 这对应于MSI安装。
对于在#1中获取的所有引用GUID的条目,请使用MSI API查找您要查找的安装信息。从MsiEnumProducts开始。从那里,您可以获得已安装应用程序的版本信息。
强行搜索C:\Program Files
和C:\Program Files (x86)
中安装的EXE。对于找到的每个EXE,您可以使用this method获取版本信息。
您想要从Windows应用商店安装的应用列表吗?如果这也很重要,请向我索取代码示例。