Question

Mon application WindowsForms doit accéder à Internet, mais lorsque j'essaie d'ouvrir un WebRequest, l'application se bloque. J'ai remarqué que lorsque je lance l'application à partir d'un simple dossier (Mes documents par exemple), cela fonctionne, mais si je lance à partir de " Program Files " dossier ce n'est pas. Je sais que le problème réside dans les autorisations UAC, mais je ne comprends pas pourquoi je ne peux pas ouvrir WebRequest dans une application exécutée à partir de "Program Files".

Il est possible d'ouvrir un WebResquest à partir de " Program Files " sans l'élévation de l'autorisation UAC (à l'aide du manifeste)?

Était-ce utile?

La solution

Essayez-vous de sauvegarder quelque chose dans le dossier local où l'application est en cours d'exécution?

Si votre application s'exécute à partir d'un dossier situé dans Program Files et que vous essayez d'écrire dans le répertoire où elle se trouve, cela peut échouer. Le dossier Program Files est l’un des emplacements requis par le contrôle de compte d'utilisateur pour pouvoir écrire (je pense).

Autres conseils

Testé avec une simple application en ligne de commande et il semble fonctionner correctement. Il fonctionnait à partir de "Program Files", le contrôle de compte d'utilisateur était actif et j'utilise Vista SP2.

WebRequest req = WebRequest.Create("http://www.google.com");
using(WebResponse resp = req.GetResponse())
{
    using(Stream str = resp.GetResponseStream())
    {
        using(StreamReader sr = new StreamReader(str))
        {
            string data = sr.ReadToEnd();
            Console.WriteLine("SUCCESS: " + data.Length + "bytes downloaded");
            Console.WriteLine("SAMPLE: " + data.Substring(0,100));
        }
    }
}

Pouvez-vous donner plus de détails sur le problème? Peut-être poster du code source?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top