阻止WebBrowser对象创建历史记录

时间:2015-08-06 15:08:13

标签: c# webbrowser-control

我有一个客户端项目,它将获取一条客户信息并使用它来打开Web浏览器。他们目前通过在默认浏览器中打开URL(" http://server.com/?customerID=XYZ")来执行此操作。但是,他们不喜欢这种解决方案,因为他们的用户倾向于将这些(非常机密的)信息留在他们的屏幕上超过必要的时间,并且它将链接留在浏览器的历史中,所以用户可以反复打开它。

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

我无法找到将WebBrowser对象设为私有或删除C#中的历史记录的任何解决方案,因此我们将非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

我最终启动了一个inPrivate窗口并在其中打开表单。然后我的表单会查找iexplore.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();
            }

答案 1 :(得分:0)

Here是一个旧帖子,他们说私有模式是不可能的。因此,您可能无法停用浏览器历史记录。

一种解决方案是在一段时间后关闭表单并使数据无效,以便无法重新打开URL。

您可以使用Javascript:

在页面上设置调用特殊Url(使用任何语法)的超时

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

然后你可以在WebBrowsers Navigating事件中拦截这个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
      }
 }
相关问题