elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección.


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderadores: Novlucker, seba123neo, kub0x, Eleкtro)
| | | |-+  ayuda en VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda en VB.NET  (Leído 232 veces)
**Aincrad**

Desconectado Desconectado

Mensajes: 62


Ver Perfil
ayuda en VB.NET
« en: 12 Septiembre 2017, 15:40 »

hola a todos los del foro.

necesito ayuda con parte de un code programado en visual studio 2008

code:

Código
  1. Try
  2.           For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
  3.                                    "C:\Users\andres\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup", _
  4.                                    FileIO.SearchOption.SearchAllSubDirectories, _
  5.                                    "*.vbs", _
  6.                                    "*.dll", _
  7.                                    "*.cmd", _
  8.                                    "*.wsf", _
  9.                                    "*.exe", _
  10.                                    "*.ink", _
  11.                                    "*.js", _
  12.                                    "*.html", _
  13.                                    "*.vbe")
  14.  
  15.                ListBox1.Items.Add(Archivo)
  16.                Form7.Show()
  17.            Next
  18.            ' errores  
  19.        Catch oe As Exception
  20.            MsgBox(oe.Message, MsgBoxStyle.Critical)
  21.        End Try
  22.  


lo que necesito es que el directorio en la linea 3 del code
cambie el usuario andres por algo como %USERPROFILE% de batch, para que
funcione en otras computadoras.
es porque si quiero correr el code en otra PC que tiene otro usuario funcione.


Los códigos de .NET van en el subforo de .NET


« Última modificación: 12 Septiembre 2017, 16:03 por engel lex » En línea

Eleкtro
Novato Astral y
Moderador Global
***
Conectado Conectado

Mensajes: 9.141


El sentido común es el menos común de los sentidos


Ver Perfil
Re: ayuda en VB.NET
« Respuesta #1 en: 12 Septiembre 2017, 16:31 »

Hola. Puedes usar la función Environment.GetFolderPath() junto a la enumeración Environment.SpecialFolder:

Código
  1. ' C:\Users\{Usuario}
  2. Dim dir As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))

Código
  1. ' C:\Users\{Usuario}\AppData\Roaming
  2. Dim dir As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))

Código
  1. ' C:\Users\{Usuario}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  2. Dim dir As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Startup))

Además también puedes expandir el valor de cualquier variable de entorno que esté definida en el sistema operativo:

Código
  1. ' C:\Users\{Usuario}
  2. Dim dirPath As String = Environment.ExpandEnvironmentVariables("%UserProfile%")

Código
  1. ' C:\Users\{Usuario}\AppData\Roaming
  2. Dim dirPath As String = Environment.ExpandEnvironmentVariables("%AppData%")

Código
  1. ' C:\Users\{Usuario}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  2. Dim dirPath As String = Environment.ExpandEnvironmentVariables("%AppData%\Microsoft\Windows\Start Menu\Programs\Startup")



Con respecto al código que has mostrado:

1. El caracter guión bajo ("_") de linebreak es innecesario escribirlo en versiones actuales de VB.NET. Solo consigue afear el código fuente.

2. Por cuestiones de rendimiento y velocidad de respuesta de la UI, te sugiero sustituir la llamada al método ListBox.Items.Add() por: ListBox.BeginUpdate() + ListBox.Items.AddRange()  + ListBox.EndUpdate(), en ese orden.

3.
Citar
Código
  1. Form7.Show()
en cada iteración del búcle estás llamando al método para mostrar ese form... probablemente eso no sea lo que realmente pretendías hacer.

Saludos.


« Última modificación: 12 Septiembre 2017, 16:50 por Eleкtro » En línea


**Aincrad**

Desconectado Desconectado

Mensajes: 62


Ver Perfil
Re: ayuda en VB.NET
« Respuesta #2 en: 12 Septiembre 2017, 17:03 »

gracias electro yo estaba intentando con un codigo similar

Código
  1. (Environment.GetFolderPath(Environment.SpecialFolder.Startup))

pero el boto no funcionaba ni lanzaba ningún error.

ahora probe tu code. lo puse de la siguiente manera

Código
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.        Dim dir As New Directory(Environment.GetFolderPath(Environment.SpecialFolder.Startup)) ' ME MARCA ERROR EN DIR
  3.        Try
  4.  
  5.            For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
  6.                                    dir, _                                          'ME MARCA ERROR EN DIR
  7.                                    FileIO.SearchOption.SearchAllSubDirectories, _
  8.                                    "*.vbs", _
  9.                                    "*.dll", _
  10.                                    "*.cmd", _
  11.                                    "*.wsf", _
  12.                                    "*.exe", _
  13.                                    "*.ink", _
  14.                                    "*.js", _
  15.                                    "*.html", _
  16.                                    "*.vbe")
  17.  
  18.                ListBox1.Items.AddRange(Archivo)
  19.            Next
  20.        Catch oe As Exception
  21.            MsgBox(oe.Message, MsgBoxStyle.Critical)
  22.        End Try
  23.    End Sub
  24.  

AHORA ME MARCAN DOS ERRORES

error en la linea 2 en la palabra dir:

Error   1   Type 'System.IO.Directory' has no constructors.   

error en la linea 6 en la palabra dir:

Error   2   Value of type 'System.IO.Directory' cannot be converted to 'String'.   

« Última modificación: 12 Septiembre 2017, 17:16 por **Aincrad** » En línea

Eleкtro
Novato Astral y
Moderador Global
***
Conectado Conectado

Mensajes: 9.141


El sentido común es el menos común de los sentidos


Ver Perfil
Re: ayuda en VB.NET
« Respuesta #3 en: 12 Septiembre 2017, 17:34 »


Código
  1. Dim dir As New Directory(...)

AHORA ME MARCAN DOS ERRORES

error en la linea 2 en la palabra dir:
Error   1   Type 'System.IO.Directory' has no constructors.   

error en la linea 6 en la palabra dir:
Error   2   Value of type 'System.IO.Directory' cannot be converted to 'String'.   

El código lo has copiado mal. Estoy usando la clase DirectoryInfo, no Directory. De todas formas no es necesario utilizar dicha clase (a menos que le vayas a sacar provecho), puedes declarar un String en su lugar ( Dim dirPath As String = Environment.GetFolderPath(...) ).

Si vas a usar la clase DirectoryInfo, entonces en la linea que he resaltado aquí abajo deberás hacer un cambio para usar la propiedad DirectoryInfo.FullName:
Código
  1.            For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
  2.                                    dir, _                                          'ME MARCA ERROR EN DIR
  3.                                    ...
  4.  
...puesto que 'dir' es un objeto (instancia de la clase DirectoryInfo), no es una variable String.

Saludos.
« Última modificación: 12 Septiembre 2017, 17:41 por Eleкtro » En línea


**Aincrad**

Desconectado Desconectado

Mensajes: 62


Ver Perfil
Re: ayuda en VB.NET
« Respuesta #4 en: 12 Septiembre 2017, 20:03 »

  ;-)           Gracias Elektro me ayudaste. si me sirvió.         ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines