1

Web ブラウザー コントロールで Cookie を削除しようとしています。このコードは Cookie ファイルを削除しましたが、プログラムを再起動するまで Cookie はメモリ内に残っています。

private void deleteCookies(string domain)
    {
        string cookiesPath =
            Environment.GetFolderPath(Environment.SpecialFolder.Cookies);
        string[] unWantedCookies = 
            Directory.GetFiles(cookiesPath, "*" + domain + "*");
        foreach (string cookie in unWantedCookies)
        {
            File.Delete(cookie);
        }
    }

私はこのコードを試しました:

webBrowser1 = new WebBrowser();

しかし、うまくいきませんでした。環境変数のどこかにあると思いますが、どこですか?

4

2 に答える 2

2

ファイル IO を使用して Cookie を削除するべきではありません。Cookie は実際にはファイルではなく、index.dat ファイル内のデータであり、仮想ファイルは存在しますが実際のものではないため、削除してもメモリから Cookie は削除されません (これはあなたの問題です)-これを行うためにjavascriptハックを使用することもお勧めしません。

Cookie を削除するには、DeleteUrlCacheEntry を調べ、FindFirst/NextUrlCacheEntry を使用してすべてのキャッシュ アイテムをループします。ループを開始したら、「cookie:」で始まるキャッシュ アイテムを探します。その後、Cookie 名、作成をさらに調べることができます。時間 (変更、同期、最終アクセス、有効期限など) を使用して、削除する Cookie を決定します。

インターネット上には、IE でキャッシュ アイテムをループして削除できるようにする、事前に作成されたコードの良い例がたくさんあります。そのアイテムに対して DeleteUrlCacheEntry を呼び出すかどうかを決定します。もちろん、そうすると、内部データベースからキャッシュ エントリが削除されるだけでなく、アクティブ メモリからも削除されます。 「ファイルは使用中です」エラー。削除する前にメモリと使用状況から解放されるためです。

さらに詳しい情報やヘルプが必要な場合はお知らせください。もう一度、必要な特定の言語の DeleteUrlCacheEntry コードを検索します。VB6 にも存在するので、c# のコピーを見つけるのに問題はないと確信しています :)。

どうやって仲良くしてるか教えて。

于 2012-08-31T11:54:30.040 に答える
0

WebBrowser.InvokeScript( http://msdn.microsoft.com/en-us/library/cc491132.aspx ) を使用して、現在のページの Cookie を消去する Javascript を実行します。

于 2012-08-29T15:31:54.413 に答える