c# - 卸载后程序仍列在控制面板中

标签 c# windows-installer uninstallation wmic controlpanel

我正在尝试使用 C# 应用程序卸载程序,一切正常,但该程序仍列在“控制面板程序和功能”中。

当我使用 wmic 从命令行卸载时,它也会执行此操作。

该程序已卸载,但我仍然必须实际单击控制面板程序和功能中的名称,弹出窗口并告诉我它已卸载。在那之后,它就永远消失了。我怎样才能绕过必须进入控制面板才能完全删除它。我需要将其卸载并且不在控制面板中列出。

这是我要卸载的代码,看起来是正确的:

string programName = "myProgram";
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");

foreach (ManagementObject mo in mos)
{
    if (mo["name"].ToString().Contains(programName))
    {
        mo.InvokeMethod("Uninstall", null);
        MessageBox.Show(mo["name"].ToString() + " uninstalled");
    }
}

最佳答案

检查卸载日志,如果卸载成功,即使在刷新后,即 F5,该条目仍然存在于控制面板中,对于要卸载的产品,删除注册表条目 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\当前版本\卸载\

关于c# - 卸载后程序仍列在控制面板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28884866/

相关文章:

installation - Installshield 在次要升级时不更新相关 DLL

android - 如何在卸载android应用程序时自动删除写入SD卡的数据?

c# - 什么是最快的 winforms 数据网格?

powershell - 如何将 KB2670838 包含在 InstallShield 2013 的安装程序中?

c# - 在 C++ 代码中调用 TerminateThread 后在 C# 代码中检测到 FatalExecutionEngineError

c# - 从 Installer 类获取当前 msi 安装文件的名称

intellij-idea - 如何在Ubuntu 13.10上卸载Intellij Idea

android - 广播句柄应用程序包更改(卸载)

c# - 如何将包含不同数据类型的 JSON 数组反序列化为单个对象

c# - dotnetcore 控制台上的 Microsoft.Extensions.Logging 和 Serilog。在 RollingFile 接收器中包含范围信息