Atendiendo a la consulta de Cesar, os dejo un fragmento de código, explicando cómo enumerar las unidades que corresponden a conexiones de Red. De hecho es una variacion del anterior post ‘Enumerar las unidades logicas de nuestros discos’.
Sub Main() Handles MyBase.Load
‘ Obtener todas las unidades logicas de mi equipo
Dim MisUnidades = From Unidad In My.Computer.FileSystem.Drives _
Select Unidad.Name
‘ Componer la informacion que visualizare de mis unidades
‘ que correspondan a conexiones de red.
Dim InfoUnidad = From info In MisUnidades _
Where My.Computer.FileSystem.GetDriveInfo(info).DriveType = IO.DriveType.Network _
Select Unidad = My.Computer.FileSystem.GetDriveInfo(info).Name, _
Tipo = My.Computer.FileSystem.GetDriveInfo(info).DriveType
Dim miVista As New DataGridView
miVista.Dock = DockStyle.Fill
Me.Controls.Add(miVista)
miVista.DataSource = InfoUnidad.ToList
End Sub
Este es el resultado

Saludos,
Pep Lluis,
‘ En respuesta a la pregunta de como enumerar las unidades
‘ Logicas de nuestros discos desde el prompt de DOS, os
‘ dejo este ejemplo utilizando el espacio de nombres
‘ My.Computer.Filesystem, en Vb9 y Linq
‘ Una vez compilado el proyecto, puede incluirse
‘ en el archivo de proceso o ‘Batch’ segun necesidad.
‘
‘
‘ Listar las unidades logicas del Equipo
Module Module1
Sub Main()
‘ Obtener todas las unidades logicas de mi equipo
Dim MisUnidades = From Unidad In My.Computer.FileSystem.Drives _
Select Unidad.Name
‘ Componer la informacion que visualizare de mis unidades
Dim InfoUnidad = From info In MisUnidades _
Select Unidad = My.Computer.FileSystem.GetDriveInfo(info).Name,
Volumen = My.Computer.FileSystem.GetDriveInfo(info).VolumeLabel(), _
Tipo = My.Computer.FileSystem.GetDriveInfo(info).DriveType, _
Espacio = My.Computer.FileSystem.GetDriveInfo(info).AvailableFreeSpace
Try
For Each Info In InfoUnidad
‘listar la informacion obtenida
Console.WriteLine(Info)
Next
Catch ex As Exception
‘despreciar la informacion de las unidades que no estan a punto
End Try
‘ esperar a que se pulse return
Console.ReadLine()
End Sub
End Module
»
» Ejemplo de utilizacion de WNetConnection
» Correspondiente al ejemplo de : http://support.microsoft.com/kb/173011/es
» Adaptado a VB9/Vista y complementando la respuesta del post
» http://forums.microsoft.com/MSDN-ES/ShowPost.aspx?PostID=3423382&SiteID=11
»
» En este ejemplo las variables lpLocalName lpRemoteName se asignan desde
» el codigo, para asignarlos dinamicamente podeis usar un listbox & textbox.
»
» Si os conectais a un recurso de servidor con un Usuario / Clave distinto
» distinto del utilizado para iniciar la session, debereis reasignar
» las variables ‘Usuario’ y ‘Clave’.
»
Public Class Form1
Private MiRdR As New RecursoDeRed
‘
‘ Conectar un recurso de RED
‘
Private Sub Conectar()
‘Definir el tipo de conexión
‘Segun documentacion del API
MiRdR.dwScope = Recurso.CONNECTED
MiRdR.dwType = Recurso_Tipo.DISK
MiRdR.dwDisplayType = Recurso_TipoVista.SHARE
MiRdR.dwUsage = Recurso_TipoUso.CONNECTABLE
‘Definir letra de unidad y nombre del recurso
MiRdR.lpLocalName = «Z:»
MiRdR.lpRemoteName = «\\servidor\recurso«
MiRdR.lpComment = «** Mi Nueva Conexion**»
MiRdR.lpProvider = «»
‘Si las credenciales son diferentes a las actuales
‘Sustituir por las adecuadas
Dim Usuario = vbNullString ‘Nombre de usuario
Dim Clave = vbNullString ‘Clave de acceso
‘Llamar a la funcion AñadirUnidad para WNetAddConnection2A
‘CONNECT_UPDATE_PROFILE = &H1
MessageBox.Show( _
CodigoError( _
AñadirUnidad(MiRdR, Clave, Usuario, &H1)), _
«Conectando…» + MiRdR.lpLocalName + » a « + MiRdR.lpRemoteName)
End Sub
‘
‘ Desconectar un recurso de red
‘
Private Sub Desconectar()
MiRdR.lpLocalName = «Z:»
‘CONNECT_UPDATE_PROFILE = &H1
If QuitarUnidad(MiRdR.lpLocalName, &H1, False) = 0 Then
MessageBox.Show(«La unidad ha sido desconectada.», _
«Desconectando…» + MiRdR.lpLocalName)
Else
MessageBox.Show(«Fallo en la desconexion del dispositivo», _
«ERROR! Desconectando…»)
End If
End Sub
‘
‘ Añadir los botones de Conectar/Desconectar
‘
Private Sub Form1_Load() Handles Me.Load
Me.Text = «Conectar unidades de Red»
Dim BotonDeConectar As New Button
BotonDeConectar.Text = «Conectar»
BotonDeConectar.Dock = DockStyle.Bottom
AddHandler BotonDeConectar.Click, AddressOf Conectar
Dim BotonDeCancelar As New Button
BotonDeCancelar.Text = «Desconectar»
BotonDeCancelar.Dock = DockStyle.Bottom
AddHandler BotonDeCancelar.Click, AddressOf Desconectar
Me.Controls.AddRange(New Control() {BotonDeConectar, BotonDeCancelar})
End Sub
End Class
‘
‘ Definicion y Referencias a la libreria mrp.dll
‘ para llamar a las funciones de WNetConnection, Add y Cancel
‘
Module WNet
Declare Function AñadirUnidad Lib «mpr.dll» Alias «WNetAddConnection2A» (ByRef lpRecursoDeRed As RecursoDeRed, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Integer
Declare Function QuitarUnidad Lib «mpr.dll» Alias «WNetCancelConnection2A» (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Integer
‘
‘ Estructura para llamar a la funcion de añadir
‘
Structure RecursoDeRed
Public dwScope As Integer
Public dwType As Integer
Public dwDisplayType As Integer
Public dwUsage As Integer
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As String
Public lpProvider As String
End Structure
‘
‘ Definir el recurso
‘
Enum Recurso
CONNECTED = &H1
REMEMBERED = &H3
GLOBALNET = &H2
End Enum
‘
‘ Definir el tipo
‘
Enum Recurso_Tipo
DISK = &H1
PRINT = &H2
ANY = &H0
End Enum
‘
‘ Definir la vista
‘
Enum Recurso_TipoVista
DOMAIN = &H1
GENERIC = &H0
SERVER = &H2
SHARE = &H3
End Enum
‘
‘ Definir el uso
‘
Enum Recurso_TipoUso
CONNECTABLE = &H1
CONTAINER = &H2
End Enum
‘
‘ Asignar codigos de retorno errores
‘
Function CodigoError(ByVal Codigo As Integer) As String
Select Case Codigo
Case 0 : Return «La unidad se agrego correctamente.»
Case 5 : Return «Acceso denegado!»
Case 66 : Return «El tipo de dispositivo, no es correcto.»
Case 67 : Return «El nombre de red, no es correcto.»
Case 85 : Return «La unidad ya esta asignada!»
Case 86 : Return «La clave de acceso no es valida!»
Case 170 : Return «Ocupado!»
Case 1200 : Return «Dispositivo Incorrecto.»
Case 1202 : Return «El dispositivo se encuentra registrado»
Case 1203 : Return «Sin red o ruta incorrecta!»
Case 1204 : Return «El suministrador es Incorrecto.»
Case 1205 : Return «No se puede abrir el perfil»
Case 1206 : Return «El perfil es Incorrecto.»
Case 1208 : Return «Error extendido»
Case 1223 : Return «Cancelado!»
Case Else
Return «ERROR, Codigo desconocido:» + Codigo.ToString
End Select
End Function
End Module
Otro sitio realizado con WordPress