• .Net/C# 应用程序直接读取本地 Cookies 文件(WinXP SP2 调用 API: InternetGetCookie 无果)


    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://bbs.et8.net/"));
      }
      [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;
      }
      }
  • 相关阅读:
    IIS6.0中,使用其它用户运行IIS
    c++构造函数详解
    Java创建文件夹及文件
    三大范式及存储方式
    对新型软件程序语言及架构的一点讨论
    C++虚函数解析
    验收测试驱动开发:ATDD实例详解
    什么是父路径及开启的方法
    note:全局配置visual studio 2010 头文件目录
    怎么把二级域名重定向到主域名
  • 原文地址:https://www.cnblogs.com/jordan2009/p/1550041.html
Copyright © 2020-2023  润新知