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

つまり、私のプログラムは Startup フォルダーで "data\face.fac" を見つけることができません。Startup フォルダーにはプログラムのショートカットしかなく、他に何もないため、わかりません。

この問題を解決して、Face Login プログラムを Startup でエラーなしで実行するにはどうすればよいですか?

4

1 に答える 1

0

WorkingDirectory次の行を使用して、アプリケーションの を設定するだけです。

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

問題は、作業ディレクトリを設定しないと、アプリケーションがショートカットが存在するディレクトリ内のすべてを検索することです。

于 2013-03-28T17:36:17.210 に答える