我正在尝试使计算机上的cookie过期。当我调用wininet.dll InternetSetCookie时,它返回FALSE,错误代码为4317,这是通用的ERROR_INVALID_OPERATION

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData);

public void Main()
{
     InternetSetCookie("http://example.com","cookieName","somevalue;expires=Mon, 01 Jan 0001 00:00:00 GMT")
}


无论如何,有没有获得有关无效操作的更多信息?

最佳答案

无论如何,有没有获得有关无效操作的更多信息?


不,那里没有。

但是,我得到ERROR_INVALID_OPERATION是因为我试图设置已经设置的cookie(我无法使用InternetSetCookie()编辑cookie)。我必须使用此function清除所有cookie。您需要先声明它:

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet,int dwOption,IntPtr lpBuffer, int lpdwBufferLength);


然后,您可以按以下方式使用它来清除cookie(Note that 42 is INTERNET_OPTION_END_BROWSER_SESSION):

bool isCleared=InternetSetOption(IntPtr.Zero, 42, IntPtr.Zero, 0);

10-08 09:27