Привет всем и спасибо, что нашли время, чтобы прочитать это. У меня есть приложение C#, где я хочу переопределить настройки cookie WinInet по умолчанию. Цель состоит в том, что даже если для параметров конфиденциальности WinInet 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 в качестве первого параметра вызова InternetSetOption, и это не имеет значения. Куки-файлы по-прежнему блокируются в моем процессе.
Причина, по которой мне нужно сделать это, заключается в том, что у меня есть встроенный Flash Player ActiveX экземпляр, который делает веб-запросы. Я успешно использовал другие вызовы InternetSetOption для изменения настроек прокси-сервера, которые использует Flash в моем процессе. Я тестирую это на Windows 7.
Какая ошибка вы получаете? Я предполагаю, что для вызова этого API требуются повышенные разрешения. –
Джим, спасибо за вопрос - на самом деле, никакая ошибка не возвращается. Вызовы возвращаются успешно, но я не вижу изменений в обработке файлов cookie. Эффект вызова должен применяться только к текущему процессу, поэтому возвышение не должно быть проблемой. – Ross