什么是阻止用户在卸载时启动应用程序的最佳方法

时间:2012-11-26 09:35:09

标签: c# .net uninstall

我正在开发一个C#windows服务+ UI应用程序。

我遇到的问题是,如果在卸载过程中用户尝试启动UI,则卸载会被破坏并卡住(因为ui保存了某些文件的句柄并阻止它们被删除)。

处理这种情况的最佳方法是什么?我想也许我应该在开始卸载过程时严格访问.exe,因此用户将无法启动它。

但我想知道是否有BKM如何做到这一点

修改

应用程序已安装在客户的计算机上,因此我无法对应用程序本身进行任何更改。

我有一个升级安装程序,可以在卸载过程中执行操作。升级安装程序首先卸载该应用程序,然后重新安装。我只能将代码添加到升级安装程序,因此我不能使用互斥锁。 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用已命名的互斥锁,它是Windows核心对象,两个进程可以检查它是否已经注册。

卸载时只需创建一个命名的互斥锁,并检查它是否存在于进程启动

Here是如何创建命名的互斥锁

Here是如何检查它是否存在

答案 1 :(得分:0)

如何在卸载过程中终止进程?

    public static bool KillProcess(string yourProcessName)
{
    foreach (Process clsProcess in Process.GetProcesses())
    {
        if (Process.GetCurrentProcess().Id == clsProcess.Id)
            continue;
        if (clsProcess.ProcessName.Contains(name))
        {
            clsProcess.Kill();
            return true;
        }
    }
    return false;
}