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:
Mostrando la ruta de instalación del sistema operativo.
Mostrando la ruta de la carpeta del sistema (System32)
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.