** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Microsoft Windows
  Mensajes nuevos Mensajes nuevos RSS - copiar archivos en red xp
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradocopiar archivos en red xp

 Responder Responder
Autor
Mensaje
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Tema: copiar archivos en red xp
    Enviado: 14/Mayo/2010 a las 11:47
Hola a todos:
 
He buscado y no he encontrado nada al respecto, quiero copiar archivos de un ordenador a otro, que compruebe si ese ordenador esta en la red y que copie los archivos.
 
Mi problema es que para poder acceder al ordenador de destino tengo que introducir usuario y contraseña (seguridad red xp) ¿Puedo hacerlo mediante access)
 
Gracias.
 
PD: UTILIZO ACCESS 2002 Y XP XP3
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 12:48
Este tema esta mal ubicado, NO es de Access, es de Windows y no, 'el que sea' se tendra que identificar (o estar creado como usuario) en el ordenador destino y Access no puede (seria un chiste la seguridad) saltarse esa premisa.
 
Un saludo, Enrique
Arriba
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 16:26
Lo siento, creo que no me he explicado bien.
 

Yo quiero copiar desde mi ordenador y mediante ACCESS un archivo a otro ordenador que tiene diferente usuario.  Yo se el nombre de ese usuario y su contraseña, y quiero mediante codigo, conectarme a ese ordenador y copiar el archivo.

 

Creo que lo tendrías que volver a mover a Access.

 

Saludos


Editado para quitar mayúsculas innecesarias.

Editado por lbauluz - 14/Mayo/2010 a las 22:24
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 17:06
Hola,
 
Te pongo un codigo para conectarte a un PC compartido.
No lo he probado pero supongo deberia ir bien.
 
Option Explicit
 
Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long
Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As Long
 
Rem Para  hacer la conexion
Function AddConnection(PonNombrePc As String, PonPassword As String, PonLetraDiscoCompartido As String) As Integer
    On Local Error GoTo Err_Local
    AddConnection = WNetAddConnection(PonNombrePc, PonPassword, PonLetraDiscoCompartido)
 
Exit_Local:
    Exit Function

Err_Local:
    AddConnection = Err
    MsgBox Err.Description, vbCritical, "Error N°:  " & Err.Number
    Resume Exit_Local
End Function
 
Rem Para cancelar la conexion
Function CancelConnection(PonLetraDiscoCompartido As String, Forzar As Integer) As Integer
    On Error GoTo Err_Local
    CancelConnection = WNetCancelConnection(PonLetraDiscoCompartido, Forzar)
 
Exit_Local:
    Exit Function

Err_Local:
    CancelConnection = Err
    MsgBox Err.Description, vbCritical, "Error N°:  " & Err.Number
    Resume Exit_Local
End Function
 
Luego mira en la ayuda de Access la instruccion
 
FileCopy
 
Saludos
 


Editado por javier.mil - 14/Mayo/2010 a las 17:09
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 17:20
Creo que puedes cambiar:
 
Forzar As Integer
por
Forzar As Boolean
Arriba
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 17:46
Una cosa, tengo
 
nombrepc
contraseña
letra disco compartido
 
me falta el usuario
 
Gracias
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 18:03
Deberias conocerlo No ?
 
Prueba
 
Donde pone PonNombrePc pon alli el nombre de usuario
Arriba
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 14/Mayo/2010 a las 18:09
Javier gracias por tu tiempo
 
Para conectarme con el otro ordenador, tendria que indicar.  Nombrepc, usuario, contraseña y unidad. Y en tu codigo me faltaria usuario.
 
Por supuesto, se el nombre del pc, usuario, contraseña y unidad.
 
Gracias.
 
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 15/Mayo/2010 a las 17:38
Hola Juan Luis
 
WNetAddConnection requiere solo del nombre del dispositivo local, el nombre del recurso de red y la contraseña necesaria para utilizar ese recurso.
Mira este enlace:
 
Saludos
 
Arriba
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 17/Mayo/2010 a las 11:30

He estado probando con wnetaddconnection pero no funciona para lo que yo quiero, he estado mirando en la pagina de microsoft y esta funcion solo es valida cuando existe en el ordenador de origen el usuario del ordenador de destino. 

Yo no tengo los usuarios de destino creados en mi ordenador, y yo me quiero conectar indicando concretamente un usuario y su contraseña del otro ordenador.
 
Seguro que esto ya debe estar resuelto, pero no lo encuentro, agradezco cualquier ayuda.
 
PD. Sigo pensando que este mensaje deberia estar en Access y VBA, porque al final y al cabo yo me quiero conectar mediante access.
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 17/Mayo/2010 a las 12:52
Hola,
 
Te explico el funcionamiento normal desde la consola de DOS seria utilizando la instuccion NET USE y por tanto seria algo parecido a esto:
 
CMD >> NET USE D: \\195.167.1.100\CarpetaCompartidaElegida Password  /USER:nombreDelUsuario
 
Entonces he creado una funcion, que simula lo mismo como si estuvies entrando desde la consola de DOS aunque  No he podido probala (No dispongo de Red Local ahora).
 
 
Function funConectarPcLan() As Boolean
'---------------------------------------------------------------------------------------
' Procedure : funConectarRedLocal
' Author    : Javier Gomez (Javier.Mil)
' Date      : 17/05/2010
' Purpose   : Conectarse a otro ordenador en una red local
'             sabiendo la Direccion , Nombre del usuario y Password
'             La direccion tiene que estar en formato:  "D:
\\195.167.1.100\CarpetaCompartidaElegida"
'             La carpeta del ordenador lejano tiene que estar como COMPARTIDO
'---------------------------------------------------------------------------------------
   
On Error GoTo Err_Local

    Rem ****** CAMBIAR ESTOS VALORES ****************************
    Const cDireccion As String = "D:
\\195.167.1.100\CarpetaCompartidaElegida"
    Const cNombreUsuario As String = "PonElNombreDelUsuarioAqui"
    Const cPassword As String = "PonELPasswordDelUsuarioAqui"
    Rem ******* FIN **********************************************

    Const cEspacio As String = " "
    Const cQ As String = """"
    Const cSegundos As Byte = 60
    Const cPrograma As String = "NET USE"
    Const CVentanaDOS As String = "cmd"
 
    Dim lngX As Long
    Dim dteEndTime As Date
 
    dteEndTime = DateAdd("s", cSegundos, Now())
 
    Do While lngX = 0 And dteEndTime > Now()
        DoEvents
        lngX = Shell(CVentanaDOS & cEspacio & cQ & cPrograma & cEspacio & cDireccion & cEspacio & cPassword & cEspacio & "/USER:" & cNombreUsuario & cQ, vbMaximizedFocus)
    Loop
 
    If lngX <> 0 Then
        funConectarPcLan = True
    Else
        funConectarPcLan = False
        MsgBox "ERROR: Al conectarse", vbExclamation, "Error"
    End If
 
Exit_Local:
    Exit Function

Err_Local:
    funConectarPcLan = False
    MsgBox Err.Description, vbCritical, "Error N°:  " & Err.Number
    Resume Exit_Local
End Function
 
Pruebala y ya me contaras.........
 
Saludos
 
 


Editado por javier.mil - 17/Mayo/2010 a las 12:53
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 17/Mayo/2010 a las 12:56
Logicamente la carpeta del ordenador lejano que ataques tiene que estar como Compartida !!
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4585
Enlace directo a este mensaje Enviado: 17/Mayo/2010 a las 13:09
Ahora No recuerdo si deberia ser comillas dobles o simples pero Si No te funcionase con comillas dobles prueba con comillas simples es decir donde pone
 
 Const cQ As String = """"
 cambialo por
 
 Const cQ As String = "'"
Arriba
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 17/Mayo/2010 a las 13:19

Gracias javier, ya lo he resuelto he encontrado un ejemplo de Emilio mediante MapNetworkDrive y RemoveNetworkDrive.

Cuando lo tenga pulido lo copio.
 
Arriba
juanluis2 Ver desplegable
Habitual
Habitual


Unido: 05/Marzo/2005
Estado: Sin conexión
Puntos: 194
Enlace directo a este mensaje Enviado: 17/Mayo/2010 a las 18:30

Entre un ejemplo de Emilio (lo siento no encuentro el enlace) y este ejemplo http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/306-mapear-y-remover-unidad-de-red.htm

He realizado lo que queria, conecto a una unidad de red, copio archivos, desconecto unidad de red.
 
'CONECTAR A UNIDAD DE RED
Private Function MapearRed(LocalName As String, RemoteName As String, Optional UserName As Variant, Optional Password As Variant) As Boolean
On Error GoTo ErrFunction
Dim obj_wsh As Object
Set obj_wsh = CreateObject("WScript.Network")
If Not Right(LocalName, 1) = ":" And Len(LocalName) = 1 Then LocalName = LocalName & ":"
    Set obj_wsh = CreateObject("WScript.Network")
If Nz(UserName, vbNullString) = vbNullString Then
    obj_wsh.MapNetworkDrive LocalName, RemoteName
Else
    obj_wsh.MapNetworkDrive LocalName, RemoteName, , UserName, Password
End If
     
On Local Error Resume Next
    Select Case Err.Number
        Case 0 ' No hubo error
            MapearRed = True
            'COPIAR ARCHIVO
            Dim archorigen As String
            Dim archprincipal As String
            archorigen = "C:\copiar\copia.txt"
            archprincipal = "w:\copia.txt"
            FileCopy archorigen, archprincipal   ' Se copia el arch
            'DESCONECTAR UNIDAD DE RED
            obj_wsh.RemoveNetworkDrive ("w:")
            'Elimina la referencia
            Set obj_wsh = Nothing
 
            Exit Function
        Case -2147024829
            MsgBox " El recurso de red no existe ", vbCritical
        Case -2147024811
            MsgBox " El recurso de red ya está mapeado ", vbCritical
        Case -2147022646
            MsgBox " error: Verifique si el nombre de " & _
                   "la unidad es correcto ", vbCritical
        Case Else
            MsgBox Err.Description, vbCritical
    End Select
      
        MapearRed = False
        'Elimina la referencia
       
        Set obj_wsh = Nothing
      
Exit Function
ErrFunction:
 
    MsgBox Err.Description
 
    'Elimina la referencia
    Set obj_wsh = Nothing
             
End Function
 
Gracias, se puede cerrar el tema.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable