我的 WindowsForms 应用程序需要访问 Internet,但是当我尝试打开 WebRequest 时,应用程序崩溃了。我注意到当我从一个简单的文件夹(例如我的文档)运行应用程序时它可以工作,但是如果我从“程序文件”文件夹运行它就不行。我知道问题在于 UAC 权限,但我不明白为什么我无法在从“程序文件”运行的应用程序中打开 WebRequest。
有什么方法可以在没有 UAC 权限提升(使用清单)的情况下从“程序文件”打开 WebResquest?
我的 WindowsForms 应用程序需要访问 Internet,但是当我尝试打开 WebRequest 时,应用程序崩溃了。我注意到当我从一个简单的文件夹(例如我的文档)运行应用程序时它可以工作,但是如果我从“程序文件”文件夹运行它就不行。我知道问题在于 UAC 权限,但我不明白为什么我无法在从“程序文件”运行的应用程序中打开 WebRequest。
有什么方法可以在没有 UAC 权限提升(使用清单)的情况下从“程序文件”打开 WebResquest?
用一个简单的命令行应用程序测试,它似乎工作正常。它从“程序文件”内部运行,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));
}
}
}
你能提供更多问题的细节吗?也许发布一些源代码?
您是否尝试将任何内容保存到运行应用程序的本地文件夹中?
如果您的应用程序从 Program Files 下的文件夹运行,并且您尝试写入它所在的目录,则可能会失败。Program Files 文件夹是需要 UAC 才能编写的地方之一(我认为)。