Welcome 微信登录

首页 / 网页编程 / ASP.NET / wininet.dll函数库:不会过期的cookie

wininet.dll函数库:不会过期的cookie2012-01-18wininet.dll中包含很多win32下和网络有关的函数,包括internet,ftp等,下面演示一个IE下不过期的cookie。 比如csdn的登陆信息可以保存2个星期,你在登陆后把系统时间改为2周后,登陆信息就失效了,使用InternetSetCookie可以自己设置过期日期。 首先在IE中登陆,登陆时选择信息保存2周,然后运行如下代码,运行之后你可以把日期调整到2010年看效果:

using System;using System.Text;using System.Runtime.InteropServices;namespace ConsoleApplication1{  class Program  {    /// <summary>    /// 设置cookie    /// </summary>    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]    public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);    /// <summary>    /// 获取cookie    /// </summary>    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]    public static extern bool InternetGetCookie(     string url, string name, StringBuilder data, ref int dataSize);    static void Main(string[] args)    {      //获取旧的      StringBuilder cookie = new StringBuilder(new String(" ",2048));      int datasize = cookie.Length;      bool b= InternetGetCookie("http://www.bianceng.cn", null, cookie, ref datasize);      //删除旧的      foreach (string fileName in System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies)))      {        if (fileName.ToLower().IndexOf("csdn") > 0)        {          System.IO.File.Delete("csdn");        }      }      //生成新的      foreach (string c in cookie.ToString().Split(";"))      {        string[] item = c.Split("=");        string name = item[0];        string value = item[1] + ";expires=Sun,22-Feb-2099 00:00:00 GMT";        InternetSetCookie("http://www.bianceng.cn",name,value);        InternetSetCookie("http://forum.csdn.net", name, value);        InternetSetCookie("http://webim.csdn.net", name, value);      }    }  }}