none
WebClient DownLoad File will be access denied on Win7, help? RRS feed

  • 问题

  • 在当前目录下建立一个临时文件夹,然后去download 一个网站,  之所以要下载这个网站的原因是我想得到这个网站上的验证码的图片,我发现这个图片是在服务器上生成的, 没有固定的地址,也不允许直接下载这个文件。

    下载好这个网站之后,我发现会有一个文件名字叫kcaptcha_image.php, 把他改为kcaptcha_image.png,我发现他就是我要找的图片。

    Okay,这就是我为什么要做这样一件事情。 现在遇到的问题是:

    我发现我创建的文件夹是只读的,但是我可以手动去创建文件,DownloadFile时候抛了一个异常,说我这个路径被deny了。 我尝试着用Admin的方式去运行他,但最后还是失败了。

    请问:

    1. 如果还用这种方式去做的话,我应该怎么办?

    2. 如果不下载网站的话,我又可以如何去得到验证码的图片,当然我是不希望在这里去IE上去check的。

    谢谢。

      

         string fileName = DateTime.Now.Ticks.ToString();
                string dirPath = Path.Combine(Environment.CurrentDirectory,fileName);

                MessageBox.Show(dirPath);

                if (!System.IO.Directory.Exists(dirPath))
                {
                    DirectoryInfo dirInfo = Directory.CreateDirectory(dirPath);

                    if ((dirInfo.Attributes & FileAttributes.ReadOnly) != 0)
                    {
                        dirInfo.Attributes = FileAttributes.Normal;
                    }

                }

                WebClient wc = new WebClient();
                wc.DownloadFile(Path.Combine(this.Url.Url), dirPath);
             

                System.Drawing.Image bmp = System.Drawing.Bitmap.FromFile(Path.Combine(dirPath, "kcaptcha_image.php"));

                VerifyPicBox.Image = bmp;

    2011年4月30日 7:39

答案

  • 你好

    你DOWNLOAD檔案 DOWNLOAD 的FOLDER是在WIN7 的C DRIVE 的嗎?

    如果是的或者你嘗試 DOWNLOAD 到其他位置..

    E.G. D DRIVE

    或TURN OFF UAC

    應該是可以的

    Please correct me if my concept is wrong


    Chi
    2011年4月30日 9:03
    版主
  • 可以将文件拷贝到当前用户名的 Application Data 目录下,这样可以避免权限问题。获取这个目录路径可以使用下面的方式:
    string path = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

    知识改变命运,奋斗成就人生!
    2011年5月3日 5:01
    版主
  • 我想应该是权限问题。首先,您在非系统盘创建一个文件夹,如 D:\Temp,然后利用安全选项卡,设置 Everyone 或者 Creator Owner 具备完全访问权限,然后,用 Visual Studio 编译您的测试代码,然后把编译好的 bin 目录中的文件复制到 D:\Temp 来运行。 注意,不要在 Visual Studio 中运行,也不要运行 *.vshost.exe。

    按照我的方法试试看,如果仍然有问题,请再跟帖给出异常文本。


    Mark Zhou
    2011年5月3日 8:03

全部回复

  • 你好

    你DOWNLOAD檔案 DOWNLOAD 的FOLDER是在WIN7 的C DRIVE 的嗎?

    如果是的或者你嘗試 DOWNLOAD 到其他位置..

    E.G. D DRIVE

    或TURN OFF UAC

    應該是可以的

    Please correct me if my concept is wrong


    Chi
    2011年4月30日 9:03
    版主
  • 我尝试过C盘D盘还有其他的Folder但是都失败了, 至于你提到的Turn Off UAC是怎么回事呢? Appreciate if you can show some example code?

    Thanks in advance,

    Edison

    2011年4月30日 12:41
  • 可以将文件拷贝到当前用户名的 Application Data 目录下,这样可以避免权限问题。获取这个目录路径可以使用下面的方式:
    string path = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

    知识改变命运,奋斗成就人生!
    2011年5月3日 5:01
    版主
  • 我想应该是权限问题。首先,您在非系统盘创建一个文件夹,如 D:\Temp,然后利用安全选项卡,设置 Everyone 或者 Creator Owner 具备完全访问权限,然后,用 Visual Studio 编译您的测试代码,然后把编译好的 bin 目录中的文件复制到 D:\Temp 来运行。 注意,不要在 Visual Studio 中运行,也不要运行 *.vshost.exe。

    按照我的方法试试看,如果仍然有问题,请再跟帖给出异常文本。


    Mark Zhou
    2011年5月3日 8:03