Newsgroup: it.comp.lang.visual-basic
Titolo: Errore 70, autorizzazione negata

Salve,
sto sviluppando (VB6) un piccolo programmino che mappi una risorsa di rete,
si connetta ad un database ed esegua una copia dei file indicati nel
database.
Per mappare la risorsa utilizzo:
'----------
Set WshNet = CreateObject("WScript.Network")
WshNet.MapNetworkDrive "Z:", percorsoDiRete, False, utente, password
'----------
dove utente è l'amministratore;
per la connessione al database non ci sono problemi;
mi si presenta l'errore in oggetto quando tento di copiare i file inseriti
nel database con FileSystemObject:
'----------
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "Z:\img\abcdefg.tif", "C:\documenti\temp"
'----------
Chiaramente agendo a manina (esplora risorse) funziona tutto. I due pc
hanno, uno Win2000pro (con la risorsa da mappare) e l'altro Win2000srv (con
la risorsa mappata).
Se avete qualche suggerimento...
Grazie.
--
Sergio MAZZA

 fso.CopyFile "Z:\img\abcdefg.tif", "C:\documenti\temp"
Così a occhio, vedo alcune cosine da definire:
1)
Se temp è la cartella di destinazione, devi mettere \ alla fine della
stringa
2)
La macchina remota che S.O. ha? Se è un NT, il nome utente deve essere
specificato con nomedominio / nomeutente.
3)
Utilizzando C:\Documenti come destinazione, se la macchina locale è un NT,
ti esponi a problematiche di diritti di accesso legati al singolo utente.
Prova, se le cose precedenti non danno buon esito, a copiare verso c:\ (solo
per vedere se cambia qualcosa).
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 Alberto
Ciao.
--
Sergio MAZZA

 l'applicazione che mappa la risorsa e dovrebbe copiare i file.
Questa mi sfugge...
Se la macchina remota, come mi sembra di capire, è un W2000Pro, è un NT.
Quindi perchè dici che non c'è nessun dominio? Ogni macchina NT è un
dominio.
Il nome utente deve essere autenticato nel dominio remoto, quindi occorre
specificare il nome dominio (che, se non hai un dominio di rete, coincide
col nome_macchina remota) davanti all'utente.
Però il problema si pone nella copia, non tanto nella connessione della
risorsa di rete.
Verifica (ma l'avrai già fatto, immagino), che il percorso sia esattamente
z:\img\ ecc... (prova a mettere il comando dos di copy direttamente in una
finestra prompt di dos).


 risorsa di rete.
sě ed č solo lě (almeno credo) il problema; la risorsa viene mappata con la
lettera che indico io (Z:) e se vado in debug, con esplora risorse la vedo e
posso "giocarci". Se, sempre in debug, avvio un altro script che dovrebbe
eseguire la stessa copia va in errore (stesso tipo) pure lui.
Quindi sembra che acceddere al FileSystem di un pc remoto (pur con il
privilegio di amministratore) tramite FileSystemObject non sorta l'effetto
voluto.


 l'effetto voluto.
FSO funziona benissimo. Il tuo problema non č lě. Del resto, hai appena
detto che se lanci la copia mentre la connessione di rete Z č attiva, anche
da finestra dos non va, quindi non č un problema di FSO (che io per queste
cose uso tranquillamente e va benissimo).
Ho provato a mettere il tuo codice in un mio progettino:
wshnet.MapNetworkDrive "Z:", "\\10.0.0.2\temp", False, "utente", "password"
fso.CopyFile "Z:\pippo.txt", "d:\temp\"
e funziona benissimo.
Controlla alcune cose:
1) riverifica che il percorso di origine sia giusto. Se connetti Z: a una
ramificazione di cartelle, in effetti conta solo la condivisione. Non vorrei
fosse lě il problema.
2) verifica che il file non sia in uso
3) verifica di avere diritti di scrittura sulla cartella di destinazione
Ciao
Alberto
--
E non so se avrň gli amici a farmi il coro,
o se avrň soltanto volti sconosciuti,
canterň le mie canzoni a tutti loro
e alla fine della strada
potrň dire che i miei giorni li ho vissuti...


Ora faccio queste verifiche; l'unica differenza tra il tuo esempio e il mio
codice č che io mappo direttamente il disco \\nomePc\c$ non una risorsa
condivisa, ma, adesso che ci penso ho provato anche a condividere la
cartella e che te lo dico a fare...
Ciao.
--
Sergio MAZZA


Ecco i risultati dei vari test eseguiti:
Con:
WNet.MapNetworkDrive "Z:", "\\nomeMacchina\g$", False,
"nomeMacchina\administrator", "password"
WNet.MapNetworkDrive "Z:", \\nomeMacchina\nomeCartellaCondivisa,
False,"nomeMacchina\administrator", "password"
WNet.MapNetworkDrive "Z:", \\nomeMacchina\nomeCartellaCondivisa,
False,"administrator", "password"
Ottengo:
"Le credenziali fornite sono in conflitto con un set di credenziali
esistente"
'-------------
E non mi mappa la risorsa.
Con:
WNet.MapNetworkDrive "Z:", "\\nomeMacchina\g$",
False,"nomeMacchina\administrator", "password"
WNet.MapNetworkDrive "Z:", "\\nomeMacchina\g$",
False,"\\nomeMacchina\administrator", "password"
WNet.MapNetworkDrive "Z:", \\nomeMacchina\nomeCartellaCondivisa,
False,"\nomeMacchina\administrator", "password"
Ottengo:
Nome utente specificato non valido
'-------------
E non mi mappa la risorsa.
Con:
WNet.MapNetworkDrive "Z:", "\\nomeMacchina\disco$", False,
"administrator","password"
WNet.MapNetworkDrive "Z:", "\\nomeMacchina\nomeCartellaCondivisa",
False,"administrator", "password"
Ottengo:
Autorizzazione negata
'-------------
E mi mappa la risorsa.
Sono test effettuati dopo il suggerimento di Gabriele del Giovine su
it.comp.win.win2000...
Ciao.
--
Sergio MAZZA

 E mi mappa la risorsa.
Quello che non capisco è se lo fai più volte, o sono vari esempi
raggruppati per risultato. Se fai il solo:
 WNet.MapNetworkDrive "Z:", "\\nomeMacchina\disco$", False, "administrator","password"
oppure solo:
WNet.MapNetworkDrive "Z:", "\\nomeMacchina\nomeCartellaCondivisa", False,"administrator", "password"
...che succede ?
Nel caso, mandami (nel NG o a questo indirizzo, è valido) quattro
righe di esempio del tuo prog, che lo provo.
Bye, G.

 esistente"
Scusa, ma questa non era esattamente la situazione che citavi nel primo
post?
Perchè ti dà un errore diverso?
A questo punto occorre una riflessione:
Tu dici che, dopo aver mappato la risorsa, riesci, da Gestione Risorse, a
giocare con gli elementi di tale risorsa (file).
Ma sei sicuro di non riuscirci anche prima di fare la connessione a Z?
Cioè, se tu riesci, da gestione risorse, ad operare sulla risorsa condivisa
(anche senza chiamarla Z:) senza dover inserire password, anche prima di
effettuare la mappatura, significa che sei già autenticato con un altro
utente, e le cose cambiano.
Quando io ti ho postato il mio esempio, ho usato come test una macchina
remota su cui non sono mappato, e che da gestione risorse non potevo gestire
prima di fare la mappatura di Z:
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...


Lo inserisco nell'Ng che mi pare il posto adatto:
'-----------
Dim WNet As WshNetwork
Dim dirPartenza As String, nomeFile As String, dirArrivo As String
Dim fso As Scripting.FileSystemObject
Set WNet = CreateObject("WScript.Network")
WNet.MapNetworkDrive "Z:", "\\IPoNomeMacchina\disco$oCartella", False,
"administrator", "password"
Set fso = CreateObject("Scripting.FileSystemObject")
dirPartenza = "z:\img\" & Left(Trim(rst("RSIMM")), 3) & "\"
nomeFile = Trim(rst("RSIMM")) & "p1.tif"
dirArrivo = "C:\documenti"
fso.CopyFile dirPartenza & nomeFile, dirArrivo, True
'-----------
Grazie.
Ciao.
--
Sergio MAZZA

 prima di fare la mappatura di Z:
Sembra la mia stessa condizione; sembra...


 Lo inserisco nell'Ng che mi pare il posto adatto:
Allora, così a me funziona (l'ho modificato per adeguarlo
alla mia realtà, ovviamente):
      Dim WshNetwork As Object
      Set WshNetwork = CreateObject("WScript.Network")
      Dim dirPartenza As String, nomeFile As String, dirArrivo As String
      Dim fso As Scripting.FileSystemObject
      WshNetwork.MapNetworkDrive "Z:", "\\Controllo\Disco C", False, "Administrator", "miaPassword"
' arrivati qui, il mapping è già fatto, controllando su gestione risorse.
' il seguito credo sia ininfluente, comunque era per controllare,
' funziona correttamente.
      Set fso = CreateObject("Scripting.FileSystemObject")
      dirPartenza = "z:\Temp\"
      nomeFile = "tmuninst.ptn"
      dirArrivo = "C:\windows\desktop\"
      fso.CopyFile dirPartenza & nomeFile, dirArrivo, True
La prova è addirittura da un vecchio W95 ad un W2K server.
Se funziona così... :-)
Bye, G.