2017-01-20 12 views
0

私はC#を少し新しくしましたが、コーディング自体は新しくありません。私は現在、いくつかのプロセスを実行し、それらのプロセスから情報を収集し、その値を.txtファイルに書き込むコンソールアプリケーションを作成しようとしています。C#コンソールアプリケーションがデスクトップに書き込まれていない

Visual Studio 2017 RCではすべてがスムーズに動作していますが、プログラムを公開して実行すると、値/データがデスクトップ上のドキュメントに公開される部分を除いてすべてが実行されます。誰かが私を正しい方向に向けることができますか、それともプログラムではなくVisualで作業しているのかを教えてください。

public static bool WriteData(string DataNeeded) 
    { 
     string Root = @"\text.txt"; 
     string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + Root; 

     if (!File.Exists(path)) 
     { 

      using (StreamWriter sw = File.CreateText(path)) 
      { 
       sw.WriteLine("Header of TXT file"); 
       sw.WriteLine("Document created: " + DateTime.Now); 
      } 
     } 

     using (StreamWriter sw = File.AppendText(path)) 
     { 
      sw.WriteLine("Data being written to text file: " + DataNeeded+ " " + DateTime.Now); 
     } 

     return true; 
    } 
+0

文書が全く作成されませんか?プログラムを実行しているユーザーは? –

+0

エラーを投げたり、プログラムがクラッシュしたりしますか?最高の賭けとは、アクセスと何か関係があるでしょうか、それはデスクトップ上にtext.txtを作成しますか? –

+0

* "公開して実行する" * - スケジュールされたタスクとして偶然実行していますか?あなたは私が信じている少し多くの権限でそれを設定しなければならないでしょう。 – TyCobb

答えて

3

解決策はそれほど単純ではないと私は思う。私は、論理的なデスクトップスペースの参照を使用してではなく、上記のSpecialFolder.Desktopがされている必要があります

string Root = @"\text.txt"; 
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + Root; 

ファイルシステムの場所を使用していました:

string Root = @"\text.txt"; 
string path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + Root; 
+1

一般的な経験則として、 'Path.Combine()](https://msdn.microsoft.com/en-us/library/fyy7a5kt(v = vs.110).aspx) string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)、Root); 'これは二重バックスラッシュを防ぎます。 –

関連する問題