Net/CSharp应用程序直接读取本地Cookies文件

直接看代码吧。

using System; using System.IO; using System.Text; using System.Text.RegularExpressions; using Microsoft.Win32; public class Class1 { static void Main(string[] args) { System.Console.WriteLine(GetCookiesFromFiles("et8")); //支持 WinXP SP2 System.Console.WriteLine(GetCookie("http://www.365yuedu.cn")); } [System.Runtime.InteropServices.DllImport("wininet.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)] public static extern bool InternetGetCookie(string lpszUrlName,string lpszCookieName,StringBuilder lpszCookieData,ref int lpdwSize); [System.Runtime.InteropServices.DllImport("kernel32.dll")] internal static extern Int32 GetLastError(); public static string GetCookie(string url) //Win32 API { int size = 1000; StringBuilder sb = new StringBuilder(size); if (!InternetGetCookie(url,"", sb,ref size)) { Console.WriteLine("Error code:{0}", GetLastError()); } return sb.ToString(); } public static string GetCookiesFromFiles(string MasterDomain) //Cookies File { string S = null; RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders", false); if (key != null) { string val = (string) key.GetValue("Cookies"); if (val!= null) { string[] F = Directory.GetFiles(val); string s = null; int i; Regex r = new Regex(@".*@" + MasterDomain + @"*/[/d+/].txt"); for (i = 0; i < F.Length; i++) { if (r.IsMatch(F[i])) { s = F[i]; } } if (s != null) //s 就是最新文件 { StreamReader sr = new StreamReader(s); s = null; i = 1; while ((s = sr.ReadLine())!= null) { if (s == "*" || s == "/n") { i = 0; } //每节只读两行 if (i == 1) { S += s; } else if (i == 2) { S += "=" + s + "; "; } i++; } } } } return S; } }

你可能感兴趣的:(String,Cookies,null,url,Class,regex)