阻止WebBrowser对象创建历史记录

本文关键字:历史 记录 创建 对象 WebBrowser 阻止 | 更新日期: 2023-09-27 18:06:46

我有一个客户项目,其中将采取一块客户信息,并使用它来打开web浏览器。他们目前通过在默认浏览器中使用一个打开URL("http://server.com/?customerID=XYZ")的按钮来做到这一点。然而,他们不喜欢这种解决方案,因为他们的用户倾向于将这些(非常机密的)信息留在屏幕上的时间超过必要的时间,并且它将链接留在浏览器的历史记录中,因此用户可以一次又一次地打开它。

解决方案是请求一个应用程序,该应用程序将在一个单独的窗口窗体中打开链接,用户无法使用导航,并在一段时间后自动关闭。我有那块工作得很好,但是在我的表单中打开WebBrowser对象中的链接仍然会将链接插入IE的浏览器历史记录中。

我找不到任何解决方案来使WebBrowser对象私有或删除在c#中工作的历史记录,所以任何关于这方面的帮助将非常感谢。

阻止WebBrowser对象创建历史记录

我最终启动了一个inPrivate窗口并在其中打开了表单。然后,我的表单查找iexplorer .exe进程,并在30秒结束时杀死它。

        System.Diagnostics.Process.Start(@"c:'program files'internet explorer'iexplore.exe","-private " + _url);

计时器完成后:

            var procs = System.Diagnostics.Process.GetProcessesByName(_name);
            foreach (var proc in procs)
            {
                proc.Kill();
            }

这是一个旧的帖子,他们说私有模式是不可能的。所以你可能无法禁用浏览器历史记录。

一种解决方案是在一定时间后关闭表单并使数据无效,这样url就无法重新打开。

你可以用Javascript:

在调用特殊Url(无论语法如何)的页面上设置超时

setTimeout(function(){ 
        window.location.href = 'special_close'; 
        }, 30000);

然后你可以在webbrowser导航事件中拦截这个url并关闭这个表单:

 private void Navigating(object sender, WebBrowserNavigatingEventArgs e)
 {
      if (e.Url.OriginalString == "special_close")
      {
            // close form that contains webbrowser
            // invalidate data here such that url can't be reloaded
      }
 }