Привет всем и спасибо, что нашли время, чтобы прочитать это. У меня есть приложение на c #, в котором я хочу переопределить стандартные настройки файлов cookie WinInet. Цель состоит в том, что даже когда в настройках конфиденциальности файлов cookie системы WinInet установлено значение «Блокировать все», файлы 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, в качестве первого параметра вызова InternetSetOption, и это не имеет значения. Файлы cookie по-прежнему блокируются в моем процессе.
Причина, по которой мне нужно это сделать, заключается в том, что у меня есть встроенный экземпляр Flash Player ActiveX, который выполняет веб-запросы. Я успешно использовал другие вызовы InternetSetOption для изменения настроек прокси-сервера, которые Flash использует в моем процессе. Я тестирую это на Windows 7.