我在WPF中创建了一个应用程序,它通过REST API通过发出请求来调用数据。获得响应,获得响应后我将下载所有图像文件& 加密它&节省我的本地驱动器&将本地加密图像的路径放在我的应用程序中的本地数据库中(SQL Server Compact 4.0)。
上述所有进程都在后台线程中运行。
现在,演示文稿层应用程序始终会查找本地数据库,如果获取任何图像路径,应用程序将通过以下方式解密它:用它来显示表示层。
Image img_home = new Image();
img_home.Width = 1920;
img_home.Height = 1080;
img_home.Source = DecryptFile.LoadBitmapImages(mediaPath);
grid_main_Home_page.Children.Add(img_home);
//where grid_main_Home_page is a Grid in application
public static BitmapSource LoadBitmapImages(string ImagePath_to_Save)
{
byte[] ImageBytes;
BitmapSource bs1;
// if (File.Exists(ImagePath_to_Save))
//{
ImageBytes = File.ReadAllBytes(ImagePath_to_Save);
using (System.IO.MemoryStream Stream = new System.IO.MemoryStream(ImageBytes))
{
Bitmap source = new Bitmap(Stream);
IntPtr ip = source.GetHbitmap();
bs1 = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
return bs1;
}
// }
}
当我在我的机器中的.exe任何地方直接运行应用程序时,我的应用程序正常工作。
当我通过C:\ Program Files(x86)\或C:\ Program Files运行我的应用程序时,它会因显示以下错误而崩溃 -
因为我在目录中查看图像文件退出,如果我将该部分代码放入尝试捕获块但仍然得到相同的错误。
如果我像
那样放置图像源img_home.Source =new BitmapImage(new Uri(mediaPath,UriKind.Absolute));
它工作正常,但我不想要它,因为在这里我需要解密&将文件保存在本地驱动器中。
请帮助我,我正在努力。
此致
Anupam mishra
答案 0 :(得分:3)
您无法在比Windows XP更新的Windows版本中写入程序目录。这是一件好事。用户数据有一个特殊文件夹。您可以查询并将数据保存在那里:
// Sample for the Environment.GetFolderPath method
using System;
class Sample
{
public static void Main()
{
var folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Console.WriteLine(folder);
Console.ReadLine();
}
}