bitmap.Save()的权限问题

时间:2011-04-05 19:09:54

标签: c# .net wpf image permissions

我有这个简单的代码:


System.Drawing.Bitmap bm = bitmapSourceToBitmap(source);
try
            {
                bm.Save(@"C:\Seva\testeImagem.jpg");
            }
            catch (Exception ex)
            {

            }

抛出:通用错误GDI +。 无论如何,我进行了搜索,人们说问题在于权限。我如何授予它权限?感谢

3 个答案:

答案 0 :(得分:1)

首先找出代码运行的凭据。

然后检查(并在需要时修复)Seva文件夹的安全性/ NTFS设置。

特别是当此代码在网站或服务中运行时,该帐户将无权写入该文件夹。

答案 1 :(得分:0)

而不是保存到C:\ Seva \ testeImagem.jpg为什么不尝试保存到

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
             "testeImagem.jpg");

您必须确保C:\下存在Seva文件夹,并确保当前用户有权写入\ create此文件夹。此外,它被认为是写入用户不拥有的文件夹的不良做法。如果用户以普通用户身份运行(而不是管理员),则无法执行此操作会导致权限例外。

答案 2 :(得分:0)

你可以测试文件夹是否存在吗?

void BitmapCopy(System.Drawing.Bitmap source, string filename) {
  if (!String.IsNullOrEmpty(filename) && (source != null)) {
    string dirName = @"C:\Seva";
    if (!System.IO.Directory.Exists(dirName)) {
      dirName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    }
    string bmpFile = System.IO.Path.Combine(dirName, filename);
    System.Drawing.Bitmap bm = bitmapSourceToBitmap(source);
    try {
      bm.Save(bmpFile);
    } catch (ArgumentNullException ex) {
      Console.WriteLine(ex.Message);
    } catch (System.Runtime.InteropServices.ExternalException ex) {
      Console.WriteLine(ex.Message);
    }

  }
}