2

如果系统中登录了多个用户,则在正常卸载应用程序时,它会显示一个消息框

在此处输入图像描述

如果用户点击继续,则会发生卸载,但可能会出现错误。我有一个项目安装程序,如果有多个用户登录,我想在其中结束安装过程。所以我在 Before_UnInstall 事件中写了这个条件:

if(Process.GetProcessesByName("explorer").Count()==1)
{
        //do uinstall
}

else
{
       //do not do unistall
}

我的问题是如何在其他部分阻止卸载事件被触发?

可能的变化

根据 Alexey 的回答,我想我会检查该流程的不同所有者。我从这里找到了如何使用 WMI 找到进程的所有者

4

1 回答 1

2

您不应该自己做:Windows Installer 会处理被其他进程锁定的文件。此外,一个用户拥有多个资源管理器进程是合法的,因此在这种情况下您的代码将拒绝卸载,但只有一个用户登录。而且我怀疑您是否可以检测到其他用户的进程,除非您运行提升的代码。

您真正要检查的是您卸载的应用程序是否在任何用户帐户下运行。如果计算机的其他用户没有运行您的应用程序,通常可以安全地继续。

于 2011-11-26T20:02:44.237 回答