从我创建的启动快捷方式运行我的应用程序时出错

时间:2013-03-28 17:33:02

标签: c# winforms

我有一张表格。打开表单时,它将读取文件夹中的文本文件:( Debug)\ Data \ text.txt并显示在文本框中...这真的是一个简单的表单。

我将表单设置为在启动时运行

我使用在启动文件夹中创建程序快捷方式的方法。

private void creatShortcut()
    {            
        WshShell = new WshShellClass();

        IWshRuntimeLibrary.IWshShortcut MyShortcut;            

        MyShortcut = (IWshRuntimeLibrary.IWshShortcut)WshShell.CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Startup)+"\\FaceLogin.lnk");           

        MyShortcut.TargetPath = Application.ExecutablePath;

        MyShortcut.Description = "Face Login";

         MyShortcut.IconLocation = Application.StartupPath + @"\Data\camera.ico";

        MyShortcut.Save();  
    }

我运行表格后。它成功地在Startup文件夹中创建了一个shorcut。 我重新启动计算机进行测试,但它会抛出此异常。

  

无法找到路径'C:\ Users \ Key \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup \ data \ face.fac'的一部分。

这是我的代码,可以阅读face.fac

private void loadDuLieu()
    {
        FileStream fs = null;
        try
        {

            if (!File.Exists(Application.StartupPath + "\\data\\face.fac"))                   
                fs = File.Create(Application.StartupPath + "\\data\\face.fac");
            else                
                fs = File.OpenRead(Application.StartupPath + "\\data\\face.fac");

                BinaryFormatter bf = new BinaryFormatter();

                if (fs != null)                        
                    lstDSMat = (List<Face>)bf.Deserialize(fs);
            }
        }
        catch (Exception ex)
        {
            return;
        }
        finally
        {
            if (fs != null)
                fs.Close();
        }
    }

这意味着我的程序在Startup文件夹中找不到“data \ face.fac”。我不明白,因为Startup文件夹只有我的程序快捷方式,没有别的。

如何在没有错误的情况下在Startup中运行我的Face Login程序来解决此问题?

1 个答案:

答案 0 :(得分:0)

只需使用以下行为您的应用设置WorkingDirectory

MyShortcut.WorkingDirectory = Path.GetDirectoryName(Application.ExecutablePath);

问题是当设置工作目录时,应用程序会查找快捷方式所在目录中的所有内容。