1

我在 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 运行我的应用程序时,它将通过显示以下错误而崩溃-在此处输入图像描述

当我在目录中查找图像文件时,如果我将这部分代码放在try catch 块中但仍然出现相同的错误。

如果我将图像源放在

img_home.Source =new BitmapImage(new Uri(mediaPath,UriKind.Absolute)); 

它工作正常,但我不想要它,因为在这里我需要解密并将文件保存在本地驱动器中。

请帮助我,我正在努力。

问候

阿努帕米什拉

4

1 回答 1

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();
    }
}
于 2013-10-04T11:52:35.893 回答