我需要将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
答案 0 :(得分:0)
如评论中所述,非特权用户无权访问Program Files文件夹。所以你有两个选择:
如果无法将文件保存到文件夹中 程序(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
。