2009-09-10 8 views
1

Mon application WindowsForms doit accéder à Internet, mais lorsque j'essaie d'ouvrir une requête Web, l'application se bloque. J'ai remarqué quand je cours l'application à partir d'un simple dossier (Mes Documents par exemple) cela fonctionne, mais si je cours du dossier "Program Files" il ne fonctionne pas. Je sais que le problème réside dans les autorisations UAC, mais je ne comprends pas pourquoi je ne peux pas ouvrir un WebRequest dans une application exécutée à partir de "Program Files".Sécurité et UAC pour .NET

Il existe un moyen d'ouvrir un WebResquest à partir de "Program Files" sans l'élévation de permission UAC (en utilisant le manifeste)?

Répondre

1

Etes-vous en train d'enregistrer 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 sous 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 endroits où l'UAC est nécessaire pour écrire (je pense).

+0

Un peu en retard mais c'était le problème :) –

+0

Oups ... n'a même pas remarqué. Pardon! – Rich

1

Testé avec une application de ligne de commande simple et il semble fonctionner correctement. Il fonctionnait à l'intérieur de "Program Files", l'UAC é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 un code source?

Questions connexes