WebBrowser控件、隔离和IE8 InPrivate模式

6
我需要在Web浏览器控件中运行一些自动化任务,但似乎面临了一些限制/未知问题,我不确定如何解决。我正在运行的应用程序不是公开发布的,因此我可以强制要求安装IE8。
GeckoFX (http://geckofx.org)非常好,但它没有提供让我像使用WebBrowser的InvokeMember方法处理HtmlElement对象那样操作DOM的可接受方式。
WebKit.net会更好,但它的开发还处于太早的阶段,也不能为我提供所需的功能。
这就只剩下WebBrowser控件了。但WebBrowser的问题在于它只运行IE,这是一个大而臃肿的共享环境,所有实例都共享cookie、会话、代理设置等。
以下是我想要的:
  • 在自动化会话结束时,cookie / session / cache 对象不会保留。除了清除全局临时互联网文件夹之外,是否有一种方法可以访问IE8公开的InPrivate模式?

  • 如果有一种访问InPrivate浏览的方法,我是否可以同时运行两个隔离的InPrivate模式会话?

理想情况下,我希望能够在单独的线程中运行多个隔离的自动化任务,每个任务都有自己的私有浏览器控件,每个任务都有自己的隔离会话/环境,在任务完成时不会保留。

任何帮助或对此的建议都将不胜感激!


你是指 Windows Forms WebBrowser 控件,WPF 还是其他的呢? - John Saunders
嗨,很抱歉这并没有提供任何帮助,但是"WebBrowser的问题在于它只运行IE,而IE是一个共享环境,所有进程都共享cookie、会话、代理设置等。换句话说,所有实例都共享这些信息。"你从哪里得到这个信息的?据我了解,WebBrowser并不与其他进程共享其cookie... - Jon Wells
2个回答

6

不,您不能在InPrivate模式下运行WebBrowser控件;这不是受支持的场景。

是的,您可以在InPrivate模式下运行两个IE实例,并将它们相互隔离。

使用命令行:iexplore.exe -private -nomerge


0

这里有一些代码,可以让您访问InPrivate IE

Friend Function Open(Optional ByVal Url As String = "about:blank", Optional ByVal WindowState As ProcessWindowStyle = ProcessWindowStyle.Hidden) As WebBrowser
On Error Resume Next

Dim Start As New ProcessStartInfo
Dim Windows = New ShellWindowsClass
Dim Count = Windows.Count
Start.FileName = "iexplore.exe"
Start.Arguments = "-private -nomerge " & Url
If WindowState = ProcessWindowStyle.Hidden Then
  Start.WindowStyle = ProcessWindowStyle.Minimized
Else
  Start.WindowStyle = WindowState
End If
Process.Start(Start)

Wait.Reset()
Do
  If Windows.Count > Count Then Exit Do
Loop While Wait.Waiting

Browser = Windows(Count)
Browser.Visible = (WindowState <> ProcessWindowStyle.Hidden)
Return Browser
End Function

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接