C#删除本地cookies遇到的问题
请教一个清除本地cookies遇到的问题
我百度到一个清除的代码,如下:
private void button1_Click(object sender, EventArgs e)
{
foreach (string strFileName in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Cookies)))
{
if (strFileName.ToLower().IndexOf("index.dat") == -1)
{
File.Delete(strFileName);
}
}
}
点button1是能够删除cookies文件,但是我当前已经打开的ie浏览器页面还会存在cookies缓存。
举例:
我打开IE登录了csdn.net ,我运行上面的代码清除cookies,cookies目录的文件是都被删除了。
但是在当前已经打开的IE浏览器地址栏里输入javascript:alert(document.cookie) 还会显示我登录状态下csdn.net的cookies信息。类似一个cookies缓存吧。需要我刷新页面才会生效。
可是我用了别人写的清除cookies软件确不存在这个问题,请教如何实现。
[解决办法]
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace WebClick_Tool
{
class IESetting
{
public enum ShowCommands : int
{
SW_HIDE = 0,
SW_SHOWNORMAL = 1,
SW_NORMAL = 1,
SW_SHOWMINIMIZED = 2,
SW_SHOWMAXIMIZED = 3,
SW_MAXIMIZE = 3,
SW_SHOWNOACTIVATE = 4,
SW_SHOW = 5,
SW_MINIMIZE = 6,
SW_SHOWMINNOACTIVE = 7,
SW_SHOWNA = 8,
SW_RESTORE = 9,
SW_SHOWDEFAULT = 10,
SW_FORCEMINIMIZE = 11,
SW_MAX = 11
}
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, ShowCommands nShowCmd);
static void RunCmd(string cmd)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
// 关闭Shell的使用
p.StartInfo.UseShellExecute = false;
// 重定向标准输入
p.StartInfo.RedirectStandardInput = true;
// 重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
//重定向错误输出
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(cmd);
p.StandardInput.WriteLine("exit");
p.WaitForExit();
}
/// <summary>
/// 清除cookie
/// </summary>
/// <returns></returns>
public static bool CleanCookie()
{
try
{
ShellExecute(IntPtr.Zero, "open", "rundll32.exe", " InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_HIDE);
//RunCmd("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255");
//RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
//RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
return true;
}
catch { return false; }
}
}
}