C# 设置系统Cookie,可用于程序登陆后免登陆跳转到WEB

本段代码是在前年编写的一个集团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的有效时长,避免留下安全隐患。