Salut à tous et merci d'avoir pris le temps de lire ceci. J'ai une application C# où je souhaite remplacer les paramètres de cookie WinInet par défaut. L'objectif est que même lorsque les paramètres de confidentialité du cookie système WinInet sont définis sur Bloquer tout, dans mon processus, les cookies seront toujours acceptés. En lisant la documentation, cela semblait assez simple. Voici une nettoyé version de ce que j'ai:WinInet InternetSetOption avec l'option INTERNET_OPTION_SUPPRESS_BEHAVIOR ne fonctionne pas comme prévu
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");
}
}
Où WinInet.InternetSetOption est défini comme:
[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);
Et les constantes sont:
WinInet.InternetOption.INTERNET_OPTION_SUPPRESS_BEHAVIOR = 81
WinInet.SuppressBehaviorFlags.INTERNET_SUPPRESS_COOKIE_POLICY = 1
L'appel InternetSetOption réussit - pas Erreur.
J'ai également essayé de passer dans un handle Internet global retourné par InternetOpen comme premier paramètre de l'appel InternetSetOption, et cela ne fait aucune différence. Les cookies continuent d'être bloqués dans mon processus.
La raison pour laquelle je dois faire ceci est que j'ai une instance intégrée de Flash Player ActiveX qui fait des demandes de Web. J'ai utilisé avec succès d'autres appels InternetSetOption pour modifier les paramètres de proxy que Flash utilise dans mon processus. Je suis en train de tester cela sur Windows 7.
Quelle erreur obtenez-vous? Je suppose que l'appel de cette API nécessite des autorisations élevées. –
Jim, merci pour la question - en fait, aucune erreur n'est retournée. Les appels reviennent avec succès, mais je ne vois aucun changement dans le traitement des cookies. L'effet de l'appel ne devrait s'appliquer qu'au processus en cours, l'élévation ne devrait donc pas poser problème. – Ross