大家好,感谢您花时间阅读本文。我有一个C#应用程序,我希望覆盖默认的WinInet cookie设置。我们的目标是,即使系统WinInet Cookie隐私设置被设置为“全部阻止”,在我的流程中,Cookie仍然会被接受。阅读文档,它看起来很直接。这里是什么,我有一个清理版本:WinInet InternetSetOption与INTERNET_OPTION_SUPPRESS_BEHAVIOR选项不能按预期方式工作
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上测试这个。
你得到了什么错误?我猜测调用这个API需要提升权限。 – 2010-06-25 18:44:54
吉姆,谢谢你的问题 - 实际上,没有错误返回。调用成功,但我看不到cookie处理的更改。呼叫的效果只适用于当前流程,因此提升不应该成为问题。 – Ross 2010-06-25 21:04:28