WPF应用程序崩溃从C:\ Program Files(x86)\或C:\ Program Files运行后

时间:2013-10-04 11:45:45

标签: c# encryption wpf-4.0

我在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运行我的应用程序时,它会因显示以下错误而崩溃 - enter image description here

因为我在目录中查看图像文件退出,如果我将该部分代码放入尝试捕获块但仍然得到相同的错误。

如果我像

那样放置图像源
img_home.Source =new BitmapImage(new Uri(mediaPath,UriKind.Absolute)); 

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

请帮助我,我正在努力。

此致

Anupam mishra

1 个答案:

答案 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();
    }
}