清除 Web 浏览器控制所有站点的 cookie,而不清除 IE 本身

2024-02-19

编辑:据我所知,这个问题没有解决方案,这又证明了一个事实:不应该使用 C# 的 WebBrowser。我们最终在程序开始时出现了一个警告标志,通知用户将为 IE 清除 cookie。

我想做的事情的简短版本就在标题中。这是长版本。

我有一个复杂的问题,我确信我会收到很多猜测作为回应。为了将善意但不幸的是无用的猜测保持在最低限度,让我首先提到这个问题的解决方案并不简单,所以不幸的是,简单的建议根本没有帮助,尽管我很感激你的努力。

.NET WebBrowser 组件从根本上来说就是 IE 本身,因此带有任何类型警告的解决方案几乎肯定不会起作用。我需要准确地做我想做的事,即使是看似很小的警告也会完全违背我的目的。冒着听起来傲慢的风险,我需要真正深入了解 .NET WebBrowser 和/或 WinInet 和/或如何从 C# 与 Windows 底层系统通信...或如何将 C++ 代码封装在其中的人的帮助。 C#。

也就是说,我不希望有人为我做这件事,并且我发现了一些有希望的提示,稍后将在这个问题中进行解释。

但首先......我想要实现的是这个。

我有一个包含 WebBrowser 控件的 Windows.Forms 组件。该控制需要:

  1. 清除所有网站的所有 cookie。
  2. 依次访问多个网站,记录 cookie 并正确处理它们。这部分已经工作正常,所以我对此没有任何问题。
  3. 冲洗并重复......理论上永远如此。

现在,真正的问题来了。我需要清除所有这些 cookie(对于任何和所有站点),但仅限于 WebBrowser 控件本身,而不是 IE 正确使用的 cookie。这种方法的根本错误当然是 .NET WebBrowser 控件isIE。但我是个固执的年轻人,我坚持认为这是可能的,否则! ;)

这就是我现在被困的地方。

仅通过 C# 以编程方式清除 WebBrowser 控件的所有 cookie 是完全不可能的。人们必须使用 DllImport 以及它附带的所有疯狂的东西。这个块可以很好地达到这个目的:

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength); 

然后,在实际清除 cookie 的函数中:

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);

然后所有的cookies都被清除了,因此我很高兴。该程序完全按照预期工作,除了它还清除 IE 的 cookie 之外,这是绝对不允许发生的。

来自 StackOverflower 的一位同事(如果这是一个词的话),Sheng Jiang 在评论中针对另一个问题提出了这一点,但没有进一步详细说明:

“如果您想隔离应用程序的 cookie,则需要通过 IDocHostUIHandler2::GetOverrideKeyPath 覆盖缓存目录注册表设置”

我在互联网上查找了 IDocHostUIHandler2 和 GetOverrideKeyPath,但我不知道如何在 C# 中使用它们将 cookie 隔离到我的 WebBrowser 控件。我对Windows注册表的经验仅限于RegEdit(所以我知道它是一个具有不同数据类型的树结构,但仅此而已......例如,我对注册表与IE的关系没有深入的了解)。

这是我在 MSDN 上查到的:

IDocHostUIHandler2 文档:http://msdn.microsoft.com/en-us/library/aa753275%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/aa753275%28VS.85%29.aspx

GetOverrideKeyPath 文档:http://msdn.microsoft.com/en-us/library/aa753274%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/aa753274%28VS.85%29.aspx

我想我大概知道what这些事情确实如此,我只是不知道how使用它们。


是否需要在 IE 中启用 cookies同时?您的程序运行后是否可以将原始cookie“恢复”回IE?

UPDATE:

另一个想法:

我想知道如果您通过模拟在不同的用户帐户下运行程序会发生什么。它可能会将这些 cookie 存储在不同的 Windows 配置文件下......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清除 Web 浏览器控制所有站点的 cookie,而不清除 IE 本身 的相关文章

随机推荐

  • iOS 9 点播资源可以永久保留吗?

    根据文档 iOS 9 通过 NSBundleResourceRequest 下载的按需资源仅保留到endAccessingResources被调用 并且被自动调用当资源请求对象被释放时 好的 但是当应用程序终止时 一切被解除分配 那么这是否
  • 在 GitHub 上拥有公共存储库的私有分支吗?

    我在 GitHub 存储库中有一个公共 PHP 项目 其中仅包含一个分支 主分支 我想要一个对我来说是私有的单独分支 分支 我已经为私有 GitHub 存储库付费 我希望能够将私人分支 分叉的更改合并到公共存储库 反之亦然 考虑到这一点 我
  • 在delphi 2009中创建gif动画文件?

    gif TgifImage Create gif Width 100 gif Height 100 gif AnimationSpeed 500 gif Animate true gif add image1 Picture Bitmap
  • Laravel:PDO异常,即使安装并测试了驱动程序也找不到驱动程序[重复]

    这个问题在这里已经有答案了 我正在开发一个 Laravel 5 1 项目 该项目必须连接到现有的 MS SQL Server 数据库 我的项目当前位于使用 Apache 2 4 18 的 Ubuntu 16 04 LTS 服务器上 我已在计
  • 什么时候发送HTTP状态码?

    目前 在我的 PHP 脚本中 当用户尝试访问不存在或不属于该用户的内容时 我会将用户重定向到自定义 404 未找到错误页面 就像这样 header Location http www mydomain com error notfound
  • 文件引用与文件?

    我想制作一个 Flash 应用程序 用户可以在其中从本地硬盘驱动器加载文件并将文件保存到本地硬盘驱动器 虽然我经常在 AIR 应用程序中使用File and FileStream类 我以前没有在 SWF 中这样做过 据我所知FileRefe
  • 使用“get”来访问地图有什么好处

    从这个问题跟进 按关键字进行惯用的 clojure 映射查找 https stackoverflow com questions 7034803 idiomatic clojure map lookup by keyword 使用 cloj
  • Spring Rest 和 jQuery Ajax 文件下载

    我目前正在使用 jQuery 和 Spring Rest jQuery 用于向服务器上传和下载文件 上传过程工作正常 但下载文件时没有什么问题 所以场景是 在视图中 用户将选择n个要下载的文件并单击下载按钮 一旦用户单击该按钮 文件就会被下
  • angular.js 选择输入框的过滤类型

    我使用 angular js 的时间很短 有时我有一种感觉 我对 html 和 javascript 一无所知 因为 Angular 在遇到我想象中应该的东西时 可能非常简单 这是我头痛的地方 我的电流控制器scope persons是工厂
  • 为动态加载的新元素添加tinymce

    我的页面包含 5 个 div 可以通过 Tinymce 内联编辑器进行编辑 我可以通过单击按钮 如此动态 来轻松地使用 Jquery 加载 5 个新的 但当然 新的 div 不会受到 Tinymce 的影响 因为 init 已经加载了 我怎
  • 如何在 wpf 中将 List 转换为 ObservableCollection

    我在 wpf 中 有一个通用列表 List 现在我希望将其转换为通用的可观察集合 ObservableCollection 我知道我可以迭代列表并将每个单独的项目添加到 Observable 集合中 然而 在我看来 必须有一种内置的方法来做
  • 如何自定义 JAXB 生成复数方法名称的方式?

    我们使用 JAXB 生成 Java 类 遇到了一些生成的复数方法名称不正确的情况 例如 我们期望的地方getPhysicians我们正在得到getPhysicien 我们如何自定义 JAXB 复数特定方法的方式 架构
  • 如何在SQL Server 2012中解析json数据?

    我正在使用 SQL Server 2012 我被分配了一项任务 其中我的专栏之一 JsonText 的表Sample包含 json 数据 我想通过解析该数据并将其插入到另一个表的列中 Test 我在网上搜索 openjson 在 SQL S
  • Google 地图 API 多个标记

    我正在使用以下代码来显示谷歌地图 并在地图上创建一个标记 它运作良好 我只需要在同一张地图上放置多个标记即可
  • Onclick 事件删除文本输入字段中的默认值

    我有一个输入字段
  • 强制客户端或服务器重新启动 SSL 握手(或使 SSL 会话过期)

    我有一个客户端 用 Java 编写 连接到 HTTPS 服务器 该服务器也是用 Java 编写的 客户端证书和可信证书存储在 PKI 令牌中 客户端不断地向服务器发送一些HTTP请求 一切都很好 现在我想强制客户端 或服务器 重新启动握手
  • Sublime Text 2控制台输入[重复]

    这个问题在这里已经有答案了 我使用 Sublime Text 2 但当我的代码要求用户输入时 它不会让我输入任何值 换句话说 input 在Python和gets在 Ruby 中无法正确提示我输入 Python 抛出一个EOFError错误
  • 实现Python异常

    我在程序中实现异常系统时遇到一些问题 我在某处发现了以下一段代码 我试图将其用于我的程序 class InvalidProgramStateException Exception def init self expr msg self ex
  • 在 AS3 中加载嵌入图像

    好吧 我觉得问这个问题很愚蠢 但我花了整个下午试图弄清楚 但没有成功 在 AS3 中 我想向库添加一个图像 我们称之为 image png 并仅使用代码实例化它 我以这种方式成功实例化了外部图像 var pLoad Loader new L
  • 清除 Web 浏览器控制所有站点的 cookie,而不清除 IE 本身

    编辑 据我所知 这个问题没有解决方案 这又证明了一个事实 不应该使用 C 的 WebBrowser 我们最终在程序开始时出现了一个警告标志 通知用户将为 IE 清除 cookie 我想做的事情的简短版本就在标题中 这是长版本 我有一个复杂的