Muy buenas, verán tengo un problema con un pequeño código de un editor de servers, se que este no es el foro de malware, pero el lenguajes es el de este foro, y creo que aquí podre encontrar mas ayuda.
El problema llega a la hora de leer un fichero que ya está en uso por algun proceso, en este caso el fichero seria el mismo ejecutable.
Public Sub EditarServer()
On Error Resume Next 'Si le quito el resume salta el error
Dim Yo As String
Dim Partes As Object
Dim SubFirma As String
SubFirma = "@#~~#@"
FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.Binary)
Yo = Space(LOF(1))
FileGet(1, Yo)
FileClose(1)
Partes = Split(Yo, SubFirma)
IPDelHost = Partes(1)
PuertoDelHost = Partes(2)
End Sub
Hay que tratar los ficheros de algun otro modo?
Saludos y gracias.
FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.Binary)
:O ...en el mismo exe?? jamas pense que se podria eso. Igual...intenta si le pones atributos de solo lectura y sin compartir?
Algo asi (no es vb, es .....vb + pseudo codigo xD)
FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.ReadOnly, FileShare.None)
Vale, tema solucionado...aqui pongo el code con la solución...
Public Sub EditarServer()
On Error Resume Next
Dim Yo As String
Dim Partes() As Object ' <--- Tenia que declararlo como array u.u
Dim SubFirma As String
SubFirma = "@#~~#@"
FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Shared) ' Y abrirlo como shared para poderse usarse a si mismo..
Yo = Space(LOF(1))
FileGet(1, Yo)
FileClose(1)
Partes = Split(Yo, SubFirma)
IPDelHost = Partes(1).ToString
PuertoDelHost = Partes(2).ToString
End Sub