Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: LeandroA en Mayo 11, 2014, 04:38:27 pm

Título: entrar en una carpeta compartida protegida con contraseña
Publicado por: LeandroA en Mayo 11, 2014, 04:38:27 pm
hola, quiero alojar en una carpeta compartida (red local) que esta en otra pc una base de datos (o archivos), bien esta carpeta requiere autentificación, si yo entro por el explorador de windows me salta el típico cartel usuario/contraseña, si ingreso los datos correctos puedo entrar en esa carpeta y hacer lo que quiera inclusive si en visual basic pongo
Código: [Seleccionar]
Debug.Print Dir("\\PC 2\Mi carpeta publica\")
no tengo ningún problema, hasta que vuelva a cerrar seción.

pero si yo no realizo este paso desde el explorador la linea anterior me da error 52 ("nombre o numero de archivo incorrecto") esto es porque no se loggea, ahora como hago esto automáticamente???

se que podrida sacarme este problema de encima configurando la pc remota y quitarle la contraseña (http://pymesytrastos.wordpress.com/2012/07/05/compartir-una-carpeta-o-disco-en-windows-7-sin-que-pida-contrasena/) , pero bien seguramente hay otra opción para estos casos, no?
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: coco en Mayo 11, 2014, 08:30:07 pm
Lea, proba el siguiente codigo que arme:
Código: (VB) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module      : mdlSharedMagic
' Author      : Cocus (santiagohssl@gmail.com)
' DateTime    : 11/05/2014
' Legal       : Free to use and distribute. You may not reproduce or publish this
'               code on any website, online service, or distribute as source on
'               any media without express permission from author.
' References  :
' Thanks To   :
' Purpose     : Logon to remote sharing servers (SMB).
' Revisions   : #0 11/05/2014 - Cocus: First cut
'---------------------------------------------------------------------------------------

Option Explicit

Private Type NETRESOURCE
    dwScope As Long
    dwType As Long
    dwDisplayType As Long
    dwUsage As Long
    lpLocalName As String
    lpRemoteName As String
    lpComment As String
    lpProvider As String
End Type

Private Const RESOURCETYPE_ANY As Long = &H0
Private Const CONNECT_UPDATE_PROFILE As Long = &H1


Private Declare Function WNetAddConnection2A Lib "mpr.dll" (ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long




Public Function AddConnection(ByVal sServer As String, _
                              ByVal sUserName As String, _
                              Optional ByVal sPassword As String, _
                              Optional ByVal sLocalShare As String = vbNullString) As Boolean
    Dim tResource         As NETRESOURCE
   
    With tResource
        .dwType = RESOURCETYPE_ANY
        .lpRemoteName = sServer
        .lpProvider = vbNullString
        .lpLocalName = sLocalShare
    End With
   
    If WNetAddConnection2A(tResource, sPassword, sUserName, CONNECT_UPDATE_PROFILE) Then
        Err.Raise Err.LastDllError, "WNetAddConnection2A", "Error connecting to server. GetLastErrror() = " & Err.LastDllError
    Else
        AddConnection = True
    End If
End Function

Llamalo asi:
Código: (VB) [Seleccionar]
Call AddConnection("\\192.168.0.2\shared", "usuario", "contraseña")
Debug.Print Dir("\\192.168.0.2\shared\")

Yo probe con una pc con XP y funciona perfecto.

Un saludo
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: LeandroA en Mayo 12, 2014, 12:10:29 am
Buena coco, es esa, lo que si hay que pasar como parámetro el server solamente, sin la ruta completa, yo en mi caso con el nombre de la pc, no lo probé con la ip.

Citar
Call AddConnection("\\PC 2", "usuario", "contraseña")

Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: coco en Mayo 12, 2014, 12:12:26 am
Mira vos. Lo que pasa lea es que el codigo era para montar unidades, pero resulta que si no pasas el parametro de la unidad a montar, te loguea nomas.
Yo tenia compartida 1 sola carpeta, con un usuario exclusiva para esa... Por eso le pase la ruta a la carpeta. Sino podrias pasarle "\\PC 2\IPC$", pero no me convence, ya que ese usuario por ahi no tiene derechos en esa carpeta, pero si en \shared por ejemplo...

En fin, despues fijate y decime que onda.
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: LeandroA en Mayo 12, 2014, 12:24:50 am
No para te dije cualquiera, lo probé de nuevo y si te toma la ruta completa solo que hay que quitarle la ultima barra \   ""\\PC 2\Mi carpeta publica" y funciona de lujo, capco coco!
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: coco en Mayo 12, 2014, 12:31:00 am
Genial lea. cualquier cosa comentame
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: Jeronimo en Mayo 12, 2014, 09:39:12 am
Hola.
También tengo el problema que tenía Leandro y todavía no lo he resuelto.
Perdón por mi ignorancia. ¿Este procedimiento debe hacerse una única vez, o se realiza cada vez que querés conectarte a la pc remota?
¿La password y el usuario deben ser del usuario que se loguea en el Win de la pc remota?
¿Podría crear un usuario de Windows exclusivamente para acceder al archivo de la pc remota?
Muchas gracias.

Jerónimo
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: LeandroA en Mayo 13, 2014, 06:26:31 am
@Jeronimo, el procedimiento debe hacerse al menos una vez por cada sesión en la pc local, la password y el usuario tienen que ser de la pc remota y por la tercer pregunta si pero ese usuario tiene que estar en la pc remota no se bien si con algún privilegio.

no se bien que pasa cuando la pc remota se suspende, si hay que volver a llamar, pero lo mas seguro es hacerlo cada vez que accedes.

Saludos.
Título: Re:entrar en una carpeta compartida protegida con contraseña
Publicado por: Jeronimo en Mayo 13, 2014, 10:23:38 am
Excelente, Leandro.
Muchas gracias.
Saludos.

Jerónimo