Obtener las rutas de carpetas especiales de Windows con VB.Net (II)

By marjuanm | msproys | 26 Sep 2019


351665157-fec046957dc95b6f817eec634a9c05add2ee16481cd47f762c91dbf075c7f908.png

Que tal, saludos a todos antes que nada:

  Hace poco publiqué un artículo para obtener la ruta de carpetas especiales de Windows usando VB.Net para ello, si no han leído el artículo los invito  a que lo hagan haciendo clic en este enlace. Concluí diciendo que mostraría como ver la ruta de otras carpetas sin recurrir al registro de Windows, muestro ahora como hacer esto.

  Aclaro que la cantidad de funciones no va a ser tan numerosa como en el artículo anterior, pues el método que ya expliqué engloba la mayor parte de las carpetas especiales. De manera que solo se mostrará como obtener la ruta de la instalación de Windows, la ruta de la carpeta System32 y la carpeta de archivos temporales del usuario.

Este es el código fuente completo, el cual se explicará en un momento más.

'#### Purpose: Show path
'#### Created date: 26/09/2019
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 26/09/2019
'#### Last modified username: Juan Manuel Mar Hdz.
Sub Button1Click(sender As Object, e As EventArgs)
MsgBox(getWindowsFolder)
End Sub

'#### Purpose: Return windir path
'#### Created date: 27/10/2012
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 10/02/2016
'#### Last modified username: Juan Manuel Mar Hdz.
'#### Thanks to https://bytes.com/topic/visual-basic-net/answers/366279-how-get-windows-directory
Public Function getWindowsFolder() As String

Dim path As String = "", index As Integer

path = System.Environment.ExpandEnvironmentVariables("%WinDir%")

If path.Trim().EndsWith("\") = True Then

index = path.LastIndexOf("\")
path = path.Substring(0, index)

End If

Return path.Trim

End Function

'#### Purpose: Return system 32 path
'#### Created date: 27/10/2012
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 10/02/2016
'#### Last modified username: Juan Manuel Mar Hdz.
Public Function getSystemFolder() As String
Return getWindowsFolder().Trim + "\system32"
End Function

'#### Purpose: Return temporal dir path
'#### Created date: 21/03/2014
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 07/03/2016
'#### Last modified username: Juan Manuel Mar Hdz.
'#### Thanks to http://www.experts-exchange.com/questions/24244771/Environment-GetEnvironmentVariable-TEMP-vs-System-IO-Path-GetTempPath.html
Public Function getTempFolder() As String

Dim path As String = "", index As Integer

path = System.IO.Path.GetTempPath().Trim

If path.Trim().EndsWith("\") = True Then

index = path.LastIndexOf("\")
path = path.Substring(0, index)

End If

Return path.Trim

End Function

  Como pueden ver, al presionar el botón se va a llamar a la función getWindowsFolder, getSystemFolder o getTempFolder según sea el caso. Comenzaré por explicar el funcionamiento de la función getWindowsFolder.

  Esta función debe toda su funcionalidad a la función System.Environment.ExpandEnvironmentVariables (parte del entorno de VB.Net), por medio de ella podemos leer variables del sistema operativo, como es en este caso la variable "%WinDir%", la cual contiene la ruta donde se encuentra instalado nuestro sistema operativo. Una vez obtenido dicha ubicación solo resta "limpiar" la ruta de caracteres "\" no deseados y simplemente retornamos el valor encontrado. Muy sencillo el funcionamiento de esta función, pero de gran utilidad.

  La función getSystemFolder depende completamente de la funcion getWindowsFolder, pues esta carpeta (System32) siempre se encuentra dentro de la carpeta donde se encuentre instalado Windows, de manera que si sabemos donde está instalado Windows solo resta agregarle la cadena de texto "\system32" a nuestro valor devuelto por getWindowsFolder. Quedando entonces de esta manera el código interno de la función getSystemFolder:

Return getWindowsFolder().Trim + "\system32"

  Finalmente, la función getTempFolder tiene un funcionamiento muy similar a getWindowsFolder, solo que se usa la función interna System.IO.Path.GetTempPath para obtener la ruta desde el sistema operativo directamente, solo resta limpiar el valor retornado (igual que getWindowsFolder) y devolvemos el valor obtenido.

Al ejecutar nuestro programa veremos el valor devuelto para cada caso:

351665157-66330ada6731a8cef7fa9075baebe05e09f224ef6a7c4574ea7109e190dfc81b.png

Mostrando la ruta de instalación del sistema operativo.

351665157-0cd8662fb975f0029faf88b7b1149a080c45028501423d617ad87169c3e8808b.png

Mostrando la ruta de la carpeta del sistema (System32)

351665157-d9276b1a7ceb9fc64552552b23b683f53fec4e8a2e602b4879147b4ab04d56be.png

Mostrando la ruta de la carpeta de archivos temporales del usuario actual.

Conclusiones:

  Windows facilita mucho el trabajo para un programador al permitir que se usen funciones del mismo, lo que conocemos como la API. Una API es un conjunto de funciones ya prearmadas que podemos usar reduciendo con ello el tiempo de desarrollo de una aplicación, hay muchísimas apis, y aunque esto no es realmente la API de Windows (porque se maneja con otros archivos enlazados y funciones nativas de esos archivos) bien puede darnos esto una idea de cual util es hacer uso de funciones ya prearmadas, con muy pocas líneas de código en este artículo y el anterior pudimos obtener la ruta de las carpetas especiales de Windows que de otra manera podría ser complicado. Espero sigan visitando este blog y gracias de antemano.

How do you rate this article?

0


marjuanm
marjuanm

I'm a VB.NET Programmer, but too programming on PHP, greetings.


msproys
msproys

Blog informático para dar a conocer mis proyectos, soy desarrollador de sistemas y partidario del software libre. Por medio de este blog estaré dando a conocer algunos de mis trabajos, así como publicando diversos códigos fuentes útiles.

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.