C# 阻止用户关闭Firefox

C# 阻止用户关闭Firefox,c#,firefox,C#,Firefox,我绝对需要一个用户登录出一个网站,她/他使用访问我们的数据库。如果用户不注销,只需关闭浏览器,系统会将用户名锁定一小时。我没有实现它,只是它的工作方式 我想写一个简单的C#程序,以某种方式检测用户是否注销,如果没有,则阻止他们关闭浏览器 1) 在Firefox.exe进程中是否有Firefox API或任何其他方式读取网站内容 2) 当用户点击“X”关闭浏览器时,是否可以中止firefox.exe进程的终止?(这可能是交易破坏者的问题) 如有任何提示,我将不胜感激。谢谢 您不能阻止用户使用合法方

我绝对需要一个用户登录出一个网站,她/他使用访问我们的数据库。如果用户不注销,只需关闭浏览器,系统会将用户名锁定一小时。我没有实现它,只是它的工作方式

我想写一个简单的C#程序,以某种方式检测用户是否注销,如果没有,则阻止他们关闭浏览器

1) 在Firefox.exe进程中是否有Firefox API或任何其他方式读取网站内容

2) 当用户点击“X”关闭浏览器时,是否可以中止firefox.exe进程的终止?(这可能是交易破坏者的问题)


如有任何提示,我将不胜感激。谢谢

您不能阻止用户使用合法方法关闭程序。这是出于明显的安全目的。

如果使用身份验证,每个用户都应该有一个会话。会话可以配置为过期。你所需要做的只是处理一个适当的问题

不要寻找任何黑客来处理浏览器退出事件-这是一个危险的路径:

  • 每个人都会讨厌它,而且你也不可能让它可靠,也就是说,在更新版本的浏览器中工作,在不同的操作系统上支持多种浏览器等等
  • 这可能适用于Firefox Mozilla(),但不适用于IE或Chrome
  • 应用程序可能会被操作系统杀死,所以浏览器事件将不会有机会触发,并且您的处理代码将无法工作

您无法阻止用户关闭firefox,因为有很多方法可以关闭firefox,但这些方法无法由您的代码控制(例如,从taskmon终止进程)。但是,您可以在代码中检测关闭事件(window.onClose()事件)并执行注销过程


但是,如果firefox(或任何其他浏览器)被杀死而不是被关闭,window.onClose()将无法工作。因此,最好在服务器中处理会话,而不是依赖于客户端行为

您可以使用javascript检测浏览器关闭或离开您的站点,并在这些情况下触发一个方法或点击一个将其注销的Web服务。非常快速,非常简单,可以跨浏览器工作

我同意奥列克西的观点。但是你可以让用户关闭Firefox变得不那么容易

我目前正在编写一个附加组件(通过SDK),用于侦听“退出应用程序请求”的观察者通知,并将asobject.data设置为true,以防止Firefox退出应用程序

observe: function(aSubject, aTopic, aData) {
    if (aTopic == "quit-application-requested") {
      aSubject.QueryInterface(Ci.nsISupportsPRBool);
      aSubject.data = (this.canQuit() == false);
    }
  }
但我真正想要的是某个窗口不被关闭,比如不关闭web应用程序(FileMaker数据库)

因此,我还尝试禁用所有命令、所有键和所有菜单(浏览器XUL),如下所示:

var allCommands = win.document.getElementsByTagName("command");
for (let i = 0; i < allCommands.length; i++) {
  allCommands[i].setAttribute("disabled", "true");
}

var allKeys = win.document.getElementsByTagName("key");
for (let i = 0; i < allKeys.length; i++) {
  allKeys[i].setAttribute("disabled", "true");
}

var allMenus = win.document.getElementsByTagName("menu");
for (let i = 0; i < allMenus.length; i++) {
  allMenus[i].setAttribute("disabled", "true");
}
var allCommands=win.document.getElementsByTagName(“命令”);
for(设i=0;i
但是用户仍然可以退出应用程序,从而关闭web应用程序窗口,除非我阻止打开新的Firefox窗口

所以“它”可以工作,但我希望他们仍然浏览,而不是关闭选项卡所在的特定选项卡或窗口

在不阻止打开新窗口的情况下,它不起作用,因为显然,当用户打开新窗口时,当用户按Alt+F4时,不是应用程序退出,而是窗口关闭。虽然我认为我已经禁用了所有的命令/键/菜单,但仍然存在某种接近的可能性


有人对如何在不妨碍新窗口打开的情况下实现这一点有什么想法吗?

您对用户系统的每个方面都有100%的控制权吗?如果你不这样做,那么你想要的在逻辑上是不可能的。改变系统的工作方式比改变Firefox与网站的交互方式更容易。简单的解决方案是将FireFox设置为在关闭时清除所有cookie。如果添加了附加的(有用的)信息,我会考虑删除投票。考虑如果用户与网络断开会发生什么:这会有与关闭浏览器相同的效果吗?如果这样做了,您将如何防止断开连接(或挂起机器等类似情况)。您不能在用户离开站点时使用警报警告用户需要注销吗?您可以将javascript添加到
窗口。onbeforeuload
事件以警告用户,或者执行一些ajax轮询。不过,不要依赖它。当然,如果浏览器崩溃,它也不会有帮助。编辑:我甚至不确定ajax调用是否会完成。系统需要重新设计以实现容错(如果浏览器崩溃会发生什么?如果windows崩溃会发生什么?如果网络瘫痪会发生什么?我可以无限期地继续)。绝对没有可靠的方法在客户端处理这个问题。如果它不打算重新设计,你必须给出的答案是“这里什么都做不了”。