【发布时间】:2013-01-18 21:07:46
【问题描述】:
Im using this post to get 我在 C# 中安装的程序列表
我通过 Click once 在我的计算机上安装了一个应用程序,现在想在用户不知情的情况下卸载。(静默)
但是我的程序没有出现在我生成的列表中。 (虽然它在控制面板下的添加和删除程序菜单中)
我什至试过this post 和this post 看看我是否可以在注册表中找到它,也许可以使用批处理脚本来卸载它,但没有找到它。
如何使用 c# 代码找到未显示的应用程序以生成计算机上安装的程序列表以将其卸载?
编辑 - 结果
我不知道这是否是发生这种情况的原因,但是通过使用第一个链接中的代码,我将结果输出到文本框,我得到了这个,(注意空格,也许这就是原因?)
我的代码:
textBox1.Text += subkey.GetValue("DisplayName") + "\r\n";
我得到的结果
Windows 驱动程序包 - 联想 (ACPIVPC) 系统 (12/15/2011 7.1.0.1)
HP LaserJet Professional M1130-M1210 MFP Series Microsoft SQL Server 2008 R2 (64-bit) Microsoft SQL Server 2008 R2 (64-bit) Microsoft Visual J# 2.0 Redistributable Package - SE (x64) Microsoft Visual Studio 2008 Remote Debugger - ENU Microsoft Visual Studio 2010 Tools for Office Runtime (x64) Intel PROSet Wireless Synaptics Pointing Device Driver Exception Hunter 2
【问题讨论】:
-
您可能应该添加相关的操作系统标签;在 Debian/Linux 上使用 mono 您可以“打开”一些
dpkg -l命令,但这可能不是您所要求的。 -
@BasileStarynkevitch:我已经有一段时间没有检查过 Debian,但我一直认为“控制面板”和“注册表”是 Windows 很容易识别的特性。
-
这是在 64 位操作系统上吗?您需要在 64 位操作系统上检查 32 位和 64 位密钥。
-
此外,使用 WMI 进行卸载通常更容易且更易于维护,而不是从注册表中读取值。不过,通过注册表查询所有已安装程序通常会更快。
-
你知道Windows Installer API吗?它允许正确枚举系统中安装的所有产品。
标签: c# batch-file uninstallation program-files