Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado 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
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?
-
Lea, proba el siguiente codigo que arme:
'---------------------------------------------------------------------------------------
' 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:
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
-
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.
Call AddConnection("\\PC 2", "usuario", "contraseña")
-
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.
-
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!
-
Genial lea. cualquier cosa comentame
-
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
-
@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.
-
Excelente, Leandro.
Muchas gracias.
Saludos.
Jerónimo