1

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

在我设置我的表单在启动时运行之后

我使用这种方式在 Startup Folder 中创建我的程序快捷方式。

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 文件夹中创建了一个快捷方式。我重新启动计算机进行测试,但它抛出了这个异常。

找不到路径“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();
        }
    }

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

我如何解决这个问题以在 Startup 中运行我的人脸登录程序而不会出现该错误?

4

1 回答 1

0

只需WorkingDirectory使用此行为您的应用程序设置:

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

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

于 2013-03-28T17:36:17.210 回答