Безопасность и UAC для .NET - PullRequest
1 голос
/ 10 сентября 2009

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

Есть ли способ открыть WebResquest из «Program Files» без повышения разрешений UAC (с помощью манифеста)?

Ответы [ 2 ]

1 голос
/ 18 июня 2012

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

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

1 голос
/ 10 сентября 2009

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

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

...