0

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

我有一个问题,如果在卸载过程中用户尝试启动 UI,则卸载会损坏并卡住(因为 ui 持有某些文件的句柄并防止它们被删除)。

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

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

编辑

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

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

4

2 回答 2

0

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

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

是创建命名互斥锁的方法

是检查它是否存在的方法

于 2012-11-26T09:40:24.540 回答
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;
}
于 2012-11-26T09:43:12.147 回答