PDA

View Full Version : [Visual C++] dare credenziali ad un applicativo per scrittura si un file su pc remoto


alessc
06-07-2007, 11:34
Ciao a tutti,

Spero di spiegarmi bene... Ho un programmino sul pc A che deve andare a scrivere su dei files del pc B connessi tra di loro in rete.
Per far questo semplicemente apro il file con parametro path = "\\<ip del pc B>\<cartella di destinazione>\file.txt" e dopo ci scrivo sopra.

Se lancio subito il programma senza fare niente mi restituisce un errore (giustamente) dicendo di non trovare il percorso o il file. Se invece prima provo ad entrare nella cartella da remoto (quindi richiedendomi le credenziali per entrare cia rete) facendo start->esegui->"\\<ip del pc B>\<cartella di destinazione>", e poi riprovando il programma allora mi funziona, questo perchč immagino le credenziali siano in cache dal precedente accesso.

C'č un modo quindi di evitare il passo start->esegui.... aggiungendo nel programma, per esempio, una form in cui si deve inserire le credenziali e dopo vada ad agire sui permessi per accedere al pc B e quindi al file?

Grazie Mille

Ale

andbin
06-07-2007, 12:32
Puoi usare le API Win32 WNetAddConnection2 o WNetAddConnection3.
Entrambe possono mostrare la dialog standard per richiedere utente/password.

#define STRICT
#include <windows.h>
#include <Winnetwk.h>

int main (void)
{
NETRESOURCE nr;

ZeroMemory (&nr, sizeof (nr));
nr.lpRemoteName = "\\\\xyz\\blabla";

WNetAddConnection2 (&nr, NULL, NULL, CONNECT_INTERACTIVE);

return 0;
}

alessc
06-07-2007, 13:04
Perfetto, grazie mille... pių tardi faccio una prova :)

alessc
10-07-2007, 15:25
Ciao...

Allora... ho fatto le prove... dopo una quintalata di errori alla fine sono arrivato al niente... la funzione sembra "passare" ma non viene mostrato nessun dialog. Come posso fare?

Grazie mille!

andbin
10-07-2007, 15:31
la funzione sembra "passare" ma non viene mostrato nessun dialog. Come posso fare?Puoi postare il pezzetto di codice dove usi le funzioni che ho detto?

alessc
10-07-2007, 16:27
OPS... chiedo venia... tra le 1000 prove ho lasciato il commento nella funzione ZeroMemory... adesso sembra ok :)
grazie e scusa!