アプリ版:「スタンプのみでお礼する」機能のリリースについて

Cookieの削除について質問なのですが、
Internet ExplorerでインターネットオプションからCookieの削除を選択した場合は、すぐにそのCookieが無効になりますが、
手動でCookieフォルダの中身を削除した場合、ブラウザ自体を再起動しないと無効にならないようです・・・。(インターネットオプションの方は再起動を行っているのでしょうか?)

私はCookieをインターネットオプションのように削除を行うプログラムを制作したいと考えているのですが、どのようにプログラミングしたら良いのでしょう?


System.IO.File.Delete(削除目的のCookieのアドレス);

C#でこのコマンドを用いてプログラムを制作しているのですが、やはりブラウザ再起動という面で止まってしまっています。

どなたかアドバイスいただけたら幸いです。

A 回答 (4件)

ANo.2のお礼への回答です。



私もC# 2005 Expressでやってみました。サンプルのコードを手直しして、一時ファイル、Cookie、履歴(Visited:)のListBox表示と、ListBoxで選択して削除に成功しました。履歴では削除できないものも検索されるようですが。

FindFirstUrlCacheEntry, FindNextUrlCacheEntryで検索したURLはlpszSourceUrlNameに求まっています。これを下記のようなコードでstringに取り出せば自由自在で、例えば先頭が"Cookie:"かどうかで選別できます。(なぜかFindFirstUrlCacheEntryの第1パラメータの指定には失敗し、全て検索されてしまいます)

.NETの経験には乏しいのでMarshalの使い方が正しいかは自信ありません。

string url = Marshal.PtrToStringAnsi(internetCacheEntry.lpszSourceUrlName);
 :
Marshal.FreeBSTR(internetCacheEntry.lpszSourceUrlName);

同様にファイル名はlpszLocalFileNameに求まっていますのでFile.Copyもできました。

また、IEのキャッシュに関する情報が下記にありました。相変わらず"Cache Groups"については良くわかってませんが、私がやってみたところではGroup外の検索で良さそうに思います。
Caching
http://msdn2.microsoft.com/en-gb/library/aa38392 …

この回答への補足

あとまた質問で申し訳ないのですが、
自分がNo2で参考にさせていただいたプログラムでよく分からないのが、グループとエントリーという言葉なんです。

グループは、関連するキャッシュの塊で
エントリーは削除されるべきグループ??

初歩的な質問で申し訳ありません。
もっともっと何度もプログラムを見直してみます。

補足日時:2006/12/26 02:04
    • good
    • 0
この回答へのお礼

すばやい返答ありがとうございました。

この回答を拝見させていただく限りでは、実現可能そうですね。
ただ自分はプログラミングに関して知識が乏しいので、実装に移るまで時間がかかるかと思われますので、先にお礼だけ述べさせていただきます。実装したらまた書き込みをさせていただきます。

ご丁寧にありがとうございました。

お礼日時:2006/12/26 00:56

ANo.3の補足への回答です。



私も"Cache Groups"については良くわかってませんが、たぶんグループを作ると、そのグループ内だけでキャッシュを再使用できたり、まとめて削除できたり、便利なこともあるのでしょう。しかし、どうやらIEでは使っていないようです。

エントリとはグループに属する/属さないに関わらず、一つの一時ファイル、Cookie、履歴のキャッシュのことを指していると思います。
FindFirstUrlCacheEntryではグループに属さないエントリを検索します。FindFirstUrlCacheEntryExを使えばGroupIdを指定してエントリを検索できるようです。

通常はFindFirstUrlCacheEntryを使用して"URLs that do not belong to any group"を処理すれば良いのではないでしょうか。

この回答への補足

お久しぶりです。色々参考になる意見ありがとうございました。
自分なりにいじくってみたのですが、うまくいきませんでした・・・。

IntPtrによってIpszSourceUrlNameとIpszLocalFileNameがどのような型で、どのようにURLとファイル名が保存されているのか分かりません・・・。Cの変数なら多少は分かるのですが・・・。

自分の中での解釈では、IpszSourceUrlNameとIpszLocalFileNameの中に入っている目的のファイルをMarchalで検索してstringに保存するということをANo.3でおっしゃっていたと捉えているのですが・・・。

もしよろしければ、ANo.3の回答でのFile.Copyとリスト表示が成功したサンプルプログラムを参考にさせていただけないでしょうか?

補足日時:2007/01/08 19:53
    • good
    • 0
この回答へのお礼

すばやい返答ありがとうございました。

色々いじくってみたいと思います。

ご丁寧な回答ありがとうございました。

お礼日時:2006/12/29 21:11

C#のサンプルを見つけました。

深く解読していないのですが私は"Group"を意識せずに検索しています。「WebBrowser コントロールをホストする場合」は意識する必要があるのだと思われます。

HOW TO: アプリケーションがビジュアルC#.NETの WebBrowser コントロールをホストする場合、キャッシュを消去します。
http://support.microsoft.com/kb/326201/ja
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
2005では動かなかったのですが、2003で実行するとTemporary Internet Filesの内容を削除することに成功しました。どうもありがとうございました。

今度は全てではなく、指定したファイルだけを他のフォルダに移動ということをやってみたいのですが、自分なりにプログラムを解読してみたのですが、難しくてうまく解読できず、実行に移れませんでした。(やはり当初の目的としては削除目的のCookieだけを何とかしたかったので)

もし、お時間があれば、Temporary Internet Filesの中にある指定のファイルを他のフォルダに移動させる方法をお教え願えませんでしょうか?
質問ばかりで申し訳ありません。

お礼日時:2006/12/23 20:58

C#でやったことはありませんが、IEのCookieの削除はDeleteUrlCacheEntry APIで可能です。

再起動しなくても無効になります。

FindFirstUrlCacheEntry, FindNextUrlCacheEntryで一時ファイル、Cookie、履歴を検索してリストし、選択したCookieをDeleteUrlCacheEntryで削除できました。Windows98 + Delphi4で作ったものですが、Windows XP Pro SP2 + Delphi7でも動きました。

VistaではCookieがうまく検索できないという情報がありますね。削除もできないかもしれません。

FindFirstUrlCacheEntry and COOKIE_CACHE_ENTRY
http://forums.microsoft.com/MSDN/ShowPost.aspx?P …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!