Newsgroup: it.comp.lang.visual-basic
Titolo: Esiste WinApi per Login a un server?

Forrei fare nel mio programma quello che si fa manualmente con Windows
quando si clicca sull'icona di un server: compare una finestra di
login che chiede UTENTE e PASSWORD, e si stabilisce la connessione con
quella risorsa (disco, cartella) rintracciabile con NET USE.
Esiste una API di Windows che permette di fare la stessa cosa
all'interno di un programma?
Grazie, Lauro

 wrote in message
news:a852m1pcqa01np8el...@4ax.com

Capisco male oppure vuoi mappare una Risorsa di rete...?
Private Declare Function WNetAddConnection2 Lib "mpr" _
    Alias "WNetAddConnection2A" _
   (lpNetResource As NETRESOURCE, _
    ByVal lpPassword As String, _
    ByVal lpUserName As String, _
    ByVal dwFlags As Long) As Long
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
'----------------------------------------------
'WNetAddConnection2
'Allows the caller to redirect (connect) a local
'device to a network resource. It is similar to
'WNetAddConnection, except that it takes a pointer
'to a NETRESOURCE structure to describe the network
'resource to connect to. It also takes the addition
'parameters lpUserID and dwFlags.
'lpNetResource
'Specifies the network resource to connect to.
'The following fields must be set when making a
'connection, the others are ignored.
'  lpRemoteName: Specifies the network resource
'                to connect to. This is limited
'                to MAX_PATH.
 
'  lpLocalName: This specifies the name of a local
'               device to be redirected, such as "F:"
'               or "LPT1". The string is treated in a
'               case insensitive manner, and may be
'               the empty string (or NULL) in which
'               case a connection to the network resource
'               is made without making a redirection.
 
'  lpProvider: Specifies the NP to connect to. If NULL
'              or empty string, Windows will try each
'              NP in turn. The caller should set
'              lpProvider only if it knows for sure
'              which network it wants. Otherwise, it
'              is preferable to let Windows determine
'              which NP the network name maps to.
'              If this is non NULL, Windows will try
'              the named NP and no other.
 
'  dwType: Specifies the type of resource to connect to.
'          It must be RESOURCETYPE_DISK or RESOURCETYPE_PRINT
'          if lpLocalName is not the empty string. It may
'          also be RESOURCETYPE_ANY if lpLocalName is the
'          empty string.
 
'lpPassword
'Specifies the password to be used in making the
'connection, normally the password associated with
'lpUserID. A NULL value or string may be passed in
'to indicate to the function to use the current
'default password.
'
'lpUserID
'This specifies the identity of the user needed to
'make the connection. If NULL, a default will be
'applied. This is used when the user wishes to connect
'to a resource, but has a different user name or
'account assigned to him for that resource. This
'identification represents a security context, and
'is NP specific.
'
'dwFlags
'This is a bit mask which may have any of the
'following bits set:
'
'  CONNECT_UPDATE_PROFILE: If the connection should
'                          be made persistent. If set,
'                          Windows automatically restores
'                          this connection when the user
'                          logs on to the network. A connection
'                          is only made persistent if the
'                          connection was successful.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Grazie.
Credo che sia quello di cui ho bisogno.

Caro Alessandro,
	grazie ancora per la tua risposta che mi è stata molto utile.
Per connettermi ad una risorsa (cartella) sul server ho usato le due
Win API: WNetAddConnection2 (mappando o non mappando la risorsa remota
su un disco virtuale locale) e WNetCancelConnection2
Tutto sembra OK; ma ho ancora un problema che forse tu, o qualcun
altro nel ng, potete risolvere.
Per cancellare la connessione attiva posso usare WNetCancelConnection2
solo se so esattamente il nome della connessione attiva.
Se l'utente ha usato il mio programma per connettersi il mio programma
sa il nome della connessione (o il disco locale) e quindi tutto è OK;
ma se l'utente si è connesso in altro modo (per es. facendo click
sull'icona del server o altra cartella e poi inserito le proprie
credenzialei) non posso usare WNetCancelConnection2 perchè non conosco
esattamente il nome della connessione.
Esiste:
a) un API per conoscere il nome della connesione attiva?
oppure
b) un API per cancellare tutte le connessioni attive senza
specificarene il nome?
Grazie, Lauro