大家好,感謝您花時間閱讀本文。我有一個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