本段代码是在前年编写的一个集团OA工具中用到的,当时的情景是利用Winform程序实现OA的登陆以及消息推送协议。处理代办和代阅的时候由于当时协议比较复杂所以没有进行WinForm版的实现,只能跳转。但是跳转不可能重新登陆,所以才会有一下这段代码。个人觉得还是比较不错的,以后应该会用到。
设置系统的Cookie主要用到的是wininet.dll模块:
wininet.dll
wininet.dll是Windows应用程序网络相关模块。
/// <summary> /// 写入函数 /// </summary> /// <param name="lpszUrlName"></param> /// <param name="lbszCookieName"></param> /// <param name="lpszCookieData"></param> /// <returns></returns> [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData); /// <summary> /// 读取函数 /// </summary> /// <param name="lpszUrlName"></param> /// <param name="lbszCookieName"></param> /// <param name="lpszCookieData"></param> /// <param name="lpdwSize"></param> /// <returns></returns> [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetGetCookie(string lpszUrlName, string lbszCookieName, StringBuilder lpszCookieData, ref int lpdwSize); /// <summary> /// 检测错误函数 /// </summary> /// <returns></returns> [DllImport("kernel32.dll")] public static extern Int32 GetLastError();
上面的定义已经出来了,下面主要是用法:
InternetSetCookie("http://office.**********.com/", "LKS_CurUser", "asdasdasdasd;expires=Sun,22-Feb-2099 00:00:00 GMT");//设置登录用户的Cookie并设置时间,让它成为可传递的永久Cookie
注意:使用时请注意控制Cookie的有效时长,避免留下安全隐患。