hola a todos los del foro.
necesito ayuda con parte de un code programado en visual studio 2008
code:
Try
For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
"C:\Users\andres\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup", _
FileIO.SearchOption.SearchAllSubDirectories, _
"*.vbs", _
"*.dll", _
"*.cmd", _
"*.wsf", _
"*.exe", _
"*.ink", _
"*.js", _
"*.html", _
"*.vbe")
ListBox1.Items.Add(Archivo)
Form7.Show()
Next
' errores
Catch oe As Exception
MsgBox(oe.Message, MsgBoxStyle.Critical)
End Try
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
Hola. Puedes usar la función
Environment.GetFolderPath() junto a la enumeración
Environment.SpecialFolder:
' C:\Users\{Usuario}
Dim dir As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))
' C:\Users\{Usuario}\AppData\Roaming
Dim dir As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))
' C:\Users\{Usuario}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
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:\Users\{Usuario}
Dim dirPath As String = Environment.ExpandEnvironmentVariables("%UserProfile%")
' C:\Users\{Usuario}\AppData\Roaming
Dim dirPath As String = Environment.ExpandEnvironmentVariables("%AppData%")
' C:\Users\{Usuario}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
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.
CitarForm7.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.
gracias electro yo estaba intentando con un codigo similar
(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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dir As New Directory(Environment.GetFolderPath(Environment.SpecialFolder.Startup)) ' ME MARCA ERROR EN DIR
Try
For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
dir, _ 'ME MARCA ERROR EN DIR
FileIO.SearchOption.SearchAllSubDirectories, _
"*.vbs", _
"*.dll", _
"*.cmd", _
"*.wsf", _
"*.exe", _
"*.ink", _
"*.js", _
"*.html", _
"*.vbe")
ListBox1.Items.AddRange(Archivo)
Next
Catch oe As Exception
MsgBox(oe.Message, MsgBoxStyle.Critical)
End Try
End Sub
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'.
Cita de: **Aincrad** en 12 Septiembre 2017, 17:03 PM
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:
Cita de: **Aincrad** en 12 Septiembre 2017, 17:03 PM
For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
dir, _ 'ME MARCA ERROR EN DIR
...
...puesto que 'dir' es un objeto (instancia de la clase
DirectoryInfo), no es una variable
String.
Saludos.
;-) Gracias Elektro me ayudaste. si me sirvió. ;-)