【问题标题】:List of Installed Programs not showing my program C#已安装程序列表未显示我的程序 C#
【发布时间】:2013-01-18 21:07:46
【问题描述】:

Im using this post to get 我在 C# 中安装的程序列表

我通过 Click once 在我的计算机上安装了一个应用程序,现在想在用户不知情的情况下卸载。(静默)

但是我的程序没有出现在我生成的列表中。 (虽然它在控制面板下的添加和删除程序菜单中)

我什至试过this postthis 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


【解决方案1】:

您还应该在 64 位系统上检查 HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall,因为应用程序也可以将其安装信息放在那里,并且它不是执行任何同步或重定向的注册表路径。

【讨论】:

  • 奇怪的是它在“HKEY_USERS\S-1-5-21-2632269440-3034877388-763067593-1000\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”中谢谢
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多