Очистка cookie управления WebBrowser для всех сайтов, не очищаясь для самого IE

Править: Насколько я знаю, нет никакого решения этой проблемы, делая это еще одним завещанием к тому, что не нужно использовать WebBrowser C#. Мы закончили с предупредительным знаком в начале нашей программы, уведомив пользователя, что cookie будут очищены для IE.

Короткая версия того, что я пытаюсь сделать, находится в заголовке. Вот долгая версия.

У меня есть определенная сложная проблема, которая я уверен, что получу много предположений как ответ на. Для хранения хорошо предназначенного, но к сожалению бесполезные предположения к минимуму, позвольте мне сначала упомянуть, что решение этой проблемы не просто, таким образом, простые предложения, к сожалению, не помогут вообще, даже при том, что я ценю усилие.

Компонентом WebBrowser.NET является существенно сам IE, таким образом, решения с любыми видами протестов не будут почти наверняка работать. Я должен сделать точно, что я пытаюсь сделать, и даже на вид незначительный протест победит цель полностью. Рискуя тем, чтобы звучать высокомерным, мне нужна помощь от кого-то, у кого действительно есть всестороннее знание о WebBrowser.NET и/или WinInet и/или как общаться с базовой системой Windows от C#... или как инкапсулировать код C++ в C#.

Тем не менее я не ожидаю, что любой сделает это для меня, и я нашел некоторые многообещающие подсказки, которые объяснены позже в этом вопросе.

Но сначала... то, чего я пытаюсь достигнуть, является этим.

У меня есть Windows. Компонент форм, который содержит управление WebBrowser. Это управление должно:

  1. Очистите ВСЕ cookie для ВСЕХ веб-сайтов.
  2. Посетите несколько веб-сайтов, один за другим, и запишите cookie и обработайте их правильно. Эта часть уже хорошо работает, таким образом, у меня нет проблем с этим.
  3. Промывка и повторение... теоретически навсегда.

Теперь, вот настоящая проблема. Я должен очистить все те cookie (для любого и всех сайтов), но только для самого управления WebBrowser а НЕ cookie который надлежащие использования IE. То, что является существенно неправильным с этим подходом, является, конечно, тем, что управлением WebBrowser.NET является IE. Но я - упрямый молодой человек, и я настаиваю на нем являющийся возможным, или иначе!;)

Вот то, где я застреваю в данный момент.

Вполне просто невозможно очистить все cookie для управления WebBrowser программно через один только C#. Нужно использовать 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);

Затем все cookie очищены и как таковы, я счастлив. Программа работает точно, как предназначено кроме того, что она также очищает куки IE, которые не должны быть разрешены для случая.

От одного товарища StackOverflower (если это - слово), Sheng Jiang предложил это другой проблеме в комментарии, но не уточнил далее:

"Если Вы хотите изолировать cookie своего приложения, необходимо переопределить установку реестра каталога Cache через IDocHostUIHandler2:: GetOverrideKeyPath"

Я осмотрел Интернет для IDocHostUIHandler2 и GetOverrideKeyPath, но у меня нет идеи того, как использовать их от C# для изоляции cookie к моему управлению WebBrowser. Мой опыт с реестром Windows ограничен RegEdit (таким образом, я понимаю, что это - древовидная структура с различными типами данных, но это об этом... У меня нет всестороннего знания отношений реестра с IE, например).

Вот то, что я вскопал на MSDN:

Документы IDocHostUIHandler2: 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

Я думаю, что знаю примерно, что делают эти вещи, я просто не знаю, как использовать их.

16
задан John Saunders 21 May 2013 в 01:32
поделиться

2 ответа

Необходимо ли одновременное использование файлов cookie в IE ? Можно ли «восстановить» исходные файлы cookie обратно в IE после запуска программы?

ОБНОВЛЕНИЕ:

Другая идея:

Интересно, что произойдет, если вы запустите свою программу под другой учетной записью пользователя, через олицетворение. Вполне возможно, что он будет хранить эти файлы cookie в другом профиле Windows...

4
ответ дан 30 November 2019 в 23:27
поделиться

Этот комментарий на Как устанавливать и удалять файлы cookie из WebBrowser Control для произвольных доменов является ошибкой. Параметр папки кэша WinInet, по-видимому, отсутствует в настройках IE, но является параметром папки Shell, поскольку IDocHostUIHandler2 может настраивать только параметры, хранящиеся в разделе реестра IE, это бесполезно для этой задачи. Я не знаю, как это сделать. настроить расположение папки, за исключением подключения всех API-интерфейсов WinInet (и застрял в обновлении приложения с учетом будущих API-интерфейсов WinInet), что в C # непросто. Я сейчас обновлю старый пост.

2
ответ дан 30 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: