【问题标题】:Permission problem with bitmap.Save()bitmap.Save() 的权限问题
【发布时间】:2023-04-07 08:48:01
【问题描述】:

我有这个简单的代码:

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

这会引发:通用错误 GDI+。 无论如何,我搜索了,人们说问题出在权限上。我怎样才能授予它权限?谢谢

【问题讨论】:

  • 你能发布确切的例外吗?

标签: c# .net wpf image permissions


【解决方案1】:

首先找出代码在什么凭据下运行。

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

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

【讨论】:

  • 我使用的是 WPF,这不是 web。但是几天前我可以在那个文件夹中保存一些东西
  • 检查权限,我不能为你做。当事情发生变化时,几天前有效的方法今天可能不再有效。
【解决方案2】:

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

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

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

【讨论】:

  • 我想我在代码中发现了另一个问题。这仍然行不通。
【解决方案3】:

你能测试一下文件夹是否存在吗?

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);
    }

  }
}

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 1970-01-01
    • 2011-10-02
    • 2011-06-03
    • 2011-05-12
    • 2020-09-14
    • 2019-05-11
    • 2014-04-20
    • 2011-03-10
    相关资源
    最近更新 更多