大家好,感谢您花时间阅读本文。我有 ac# 应用程序,我希望在其中覆盖默认的 WinInet cookie 设置。目标是即使系统 WinInet cookie 隐私设置设置为 Block All,在我的进程中,cookie 仍将被接受调用。阅读文档,它看起来很简单。这是我所拥有的清理后的版本:
private unsafe void SuppressWininetBehavior()
{
int option = (int)WinInet.SuppressBehaviorFlags.INTERNET_SUPPRESS_COOKIE_POLICY;
int* optionPtr = &option;
bool success = WinInet.InternetSetOption(IntPtr.Zero, WinInet.InternetOption.INTERNET_OPTION_SUPPRESS_BEHAVIOR, new IntPtr(optionPtr), sizeof(int));
if (!success)
{
_log.Warn("Failed in WinInet.InternetSetOption call with INTERNET_OPTION_SUPPRESS_BEHAVIOR, INTERNET_SUPPRESS_COOKIE_POLICY");
}
}
其中 WinInet.InternetSetOption 定义为:
[DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return : MarshalAs(UnmanagedType.Bool)]
public static extern bool InternetSetOption(IntPtr hInternet, InternetOption dwOption, IntPtr lpBuffer, int dwBufferLength);
常数是:
WinInet.InternetOption.INTERNET_OPTION_SUPPRESS_BEHAVIOR = 81
WinInet.SuppressBehaviorFlags.INTERNET_SUPPRESS_COOKIE_POLICY = 1
InternetSetOption 调用成功 - 没有错误。
我还尝试将 InternetOpen 返回的全局 Internet 句柄作为 InternetSetOption 调用的第一个参数传递,这没有区别。Cookie 继续在我的进程中被阻止。
我需要这样做的原因是我有一个嵌入式 Flash Player ActiveX 实例,它发出 Web 请求。我已成功使用其他 InternetSetOption 调用来修改 Flash 在我的进程中使用的代理设置。我正在 Windows 7 上对此进行测试。