无法在应用程序安装目录中保存图像

时间:2018-03-02 08:35:10

标签: vb.net

我需要将Form2的背景保存到文件中。看起来存在访问保存路径的问题。它抛出以下异常:

  

GDI +中发生了一般错误

以管理员身份运行应用程序时,它可以正常运行,但程序必须在没有管理员权限的情况下运行。

这是我的代码:

Dim sPath As New SaveFileDialog
sPath.DefaultExt = ".\"

Dim bmp As New Bitmap(Form2.BackgroundImage)
Try
    'bmp = Form2.BackgroundImage
    bmp.Save(sPath.FileName + "image.png", System.Drawing.Imaging.ImageFormat.Png)
Catch ex As Exception
    MsgBox(ex.Message)
End Try

1 个答案:

答案 0 :(得分:0)

如评论中所述,非特权用户无权访问Program Files文件夹。所以你有两个选择:

  1. 强制您的应用程序以管理员身份运行:检查this answer。但是,除非实际,否则不建议这样做 需要拥有管理员权限。
  2. 另一个选项是不保存在您没有的文件夹中 进入。
  3.   

    如果无法将文件保存到文件夹中   程序(Program Files),你不知道在哪里替代   文件应该保存没有管理员权限?

    嗯,这取决于你实际想要保存的内容:

    • 我看到你正在使用SaveFileDialog。如果这是用户要保存的内容,请让用户选择他们的首选目的地。
    • 如果没有,这是某种应用程序数据/设置,则应将其保存在应用程序数据文件夹("%AppData%""%LocalAppData%")中。这两个文件夹不需要管理员权限,它们是存储应用程序数据的正确位置。

      以下是如何使用其中一个foders的示例:

      'Dim localAppDataDir As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
      Dim appDataDir As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
      Dim imagesDir As String = Path.Combine(appDataDir, Process.GetCurrentProcess().ProcessName, "Images")
      
      Dim imageFilePath = Path.Combine(imagesDir, "YourFilename.png")
      bmp.Save(imageFilePath)
      

      注意:在这种情况下,您不需要我在代码中看不到任何用途的SaveFileDialog