[Solucionado] Problema de lectura de ficheros

Iniciado por Kasi, 17 Julio 2009, 16:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Kasi

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.

raul338

Código (vbnet) [Seleccionar]
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)
Código (vbnet) [Seleccionar]
FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.ReadOnly, FileShare.None)

Kasi

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