zoukankan      html  css  js  c++  java
  • 清除webBrowser 缓存和Cookie的解决方案

    通过测试webBrowser与IE缓存和Cookie都存放在Local SettingsTemporary Internet Files,我们可以直接调用IE API进行清除

    解决方案1:

    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);
    
    //清除IE临时文件
    ShellExecute(IntPtr.Zero, "open", "rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_HIDE)

    其中ClearMyTracksByProcess 可进行选择设置 :

    Temporary Internet Files  (Internet临时文件)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

    Cookies

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

    History (历史记录)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

     Form. Data (表单数据)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

     Passwords (密码)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

     Delete All  (全部删除)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

    缺点:在Webbrowser 在不关闭的情况下无法清除cookie

    解决方案2:

    //清除Session所需要调用的函数
    [ DllImport ("wininet.dll" , SetLastError = true )]
    private static extern bool InternetSetOption ( IntPtr hInternet , int dwOption, IntPtr lpBuffer , int lpdwBufferLength );
    //清空session
    public void ResetSession()
    {
        //Session的选项ID为42
        InternetSetOption ( IntPtr.Zero , 42 , IntPtr.Zero , 0 );
    }
    //清空cookie
    public void ResetCookie()
    {
        if (c_web.Document != null )
        {
        c_web.Document.Cookie.Remove (0 , c_web.Document.Cookie.Count() - 1 );
    
        }
        string [] theCookies = System.IO.Directory.GetFiles ( Environment.GetFolderPath (Environment.SpecialFolder.Cookies ));
        foreach (string currentFile in theCookies )
        {
            try
            {
                System.IO.File.Delete (currentFile );
            }
            catch (Exception ex)
            {
            }
        }
    }

    缺点:需要程序取得管理员权限

    解决方案3:

    利用 webBrowser 执行清楚cookie的js代码

    this._webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())");

    缺点:在某些运行环境中会报“无法下载”的错,至于原因目前还没找到

  • 相关阅读:
    【bzoj4591】[Shoi2015]超能粒子炮·改 Lucas定理
    【bzoj1604】[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 旋转坐标系+并查集+Treap/STL-set
    十分钟看懂图像语义分割技术
    命令行执行python模块时提示ImportError: No module named xxx
    python json与字典对象互相转换
    C#中json字符串的序列化和反序列化
    Python当前线程休眠1秒钟
    python之bytes和string
    Win32 基本文件读写操作
    C# 字符串与字节数组相互转换
  • 原文地址:https://www.cnblogs.com/feiyuhuo/p/5272954.html
Copyright © 2011-2022 走看看