2009-09-10 9 views
1

Приложение WindowsForms должно получить доступ к Интернету, но когда я пытаюсь открыть WebRequest, приложение аварийно завершает работу. Я заметил, что когда я запускаю приложение из простой папки (например, «Мои документы»), он работает, но если я запускаю из папки «Program Files», это не так. Я знаю, что проблема заключается в разрешениях UAC, но я не понимаю, почему я не могу открыть WebRequest в приложении, запущенном из «Program Files».Безопасность и UAC для .NET

Существует какой-либо способ открыть WebResquest из «Программных файлов» без повышения разрешения UAC (используя манифест)?

ответ

1

Вы пытаетесь сохранить что-либо в локальной папке, где работает приложение?

Если ваше приложение запущено из папки в разделе «Программы», и вы пытаетесь записать его в каталог, где он находится, это может привести к ошибке. Папка Program Files является одним из мест, где требуется UAC для написания (я думаю).

+0

Немного поздно, но это была проблема :) –

+0

К сожалению ... даже не заметил. Сожалею! – Rich

1

Протестировано простым приложением командной строки и, похоже, работает правильно. Он запускался изнутри «Program Files», UAC был активным, и я запускаю 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)); 
     } 
    } 
} 

Можете ли вы дать более подробную информацию о проблеме? Может быть, опубликовать некоторый исходный код?

 Смежные вопросы

  • Нет связанных вопросов^_^