wininet.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); } } } }