2016-12-17 21 views
0

私は、テキストファイルに書き込み、すべてのコンピュータの起動時にそれを読む必要があるプログラムを作成しました。システムが指定されたファイルを見つけることができませんc#

私はスタートアッププログラムに私のプログラムを追加するためにレジストリを使用し、このSIMPLコードを書いた:意外なことに

private void Form1_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     Process.Start("settings.txt"); 
    } 
    catch(Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
    } 

private void button1_Click(object sender, EventArgs e) 
{ 
    File.WriteAllText("settings.txt", "Test Writing"); 
} 

を、私はエラーになっています:次回

The system cannot find the file specified

例外を私のコンピュータを再起動し、そのプログラムが実行されます...ファイルが存在しないのと同じように...

さらに、私がプログラムを起動すると(手動で)ファイルを見つけて起動しますそのテキストファイルから読むことができますが、今すぐ起動しようとしています)。

プログラムの実行パスも印刷しようとしましたが、両方の試行(手動起動とWindows起動起動)は同じパスを表示します。

私の場合は誰も考えていますか?

ありがとうございました。

+0

驚くべきことではない:

はこのAppDomain.CurrentDomain.BaseDirectoryなどをaddinng試してみてください。そのファイルがあなたのアプリと同じフォルダにない場合、それは見つからないでしょう。 – Plutonix

+0

ええ、私の推測では、プログラムを手動で実行すると、 "スタート"場所または現在のパスは、システムがあなたのために起動するときの現在のパスとは異なります。 –

+0

アプリケーションのパスを見つける方法については、https://stackoverflow.com/questions/837488/how-can-i-get-the-applications-path-in-a-net-console-application/837501#837501を参照してください。 。 – sgmoore

答えて

0

実行ファイルの相対パスを取得する必要があります。

Process.Start(AppDomain.CurrentDomain.BaseDirectory + "settings.txt"); 
関連する問題