我有一个客户端项目,它将获取一条客户信息并使用它来打开Web浏览器。他们目前通过在默认浏览器中打开URL(" http://server.com/?customerID=XYZ")来执行此操作。但是,他们不喜欢这种解决方案,因为他们的用户倾向于将这些(非常机密的)信息留在他们的屏幕上超过必要的时间,并且它将链接留在浏览器的历史中,所以用户可以反复打开它。
解决方案是对应用程序的请求,该应用程序将在单独的窗体中打开链接,而用户无法使用导航,并且会在一段时间后自动关闭。我有这个工作正常,但在我的表单中打开WebBrowser对象中的链接仍然将链接插入到IE的浏览器历史记录中。
我无法找到将WebBrowser对象设为私有或删除C#中的历史记录的任何解决方案,因此我们将非常感谢您提供的任何帮助。
答案 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
}
}