如果在系统中登录了多个用户,通常会正常取消应用程序,它会显示一个消息框
如果用户点击继续,则会发生安装,但可能会出错。我有一个项目安装程序,如果有多个用户登录,我想在其中结束安装过程。所以我在Before_UnInstall事件中写了这个条件:
if(Process.GetProcessesByName("explorer").Count()==1)
{
//do uinstall
}
else
{
//do not do unistall
}
我的问题是如何在else部分中停止触发卸载事件?
可能的变更
根据Alexey的回答,我想我会检查过程的不同所有者。我找到了如何使用here
中的WMI查找进程的所有者答案 0 :(得分:2)
您不应该自己动手:Windows Installer将负责其他进程锁定的文件。此外,用户拥有多个资源管理器进程是合法的,因此在这种情况下您的代码将拒绝卸载,但只有一个用户登录。我怀疑你可以检测来自其他用户的进程,除非你提升了这段代码。
您真正想要检查的是您卸载的应用程序是否在任何用户帐户下运行。如果计算机的其他用户没有运行您的应用程序,则通常可以安全地继续运行。