WNetAddConnection3W, fonction (winnetwk.h)
La fonction WNetAddConnection3 établit une connexion à une ressource réseau. La fonction peut rediriger un appareil local vers la ressource réseau.
La fonction WNetAddConnection3 est similaire à la fonction WNetAddConnection2 . La main différence est que WNetAddConnection3 a un paramètre supplémentaire, un handle pour une fenêtre que le fournisseur de ressources réseau peut utiliser comme fenêtre propriétaire pour les boîtes de dialogue. La fonction WNetAddConnection2 et la fonction WNetAddConnection3 remplacent la fonction WNetAddConnection .
Syntaxe
DWORD WNetAddConnection3W(
[in] HWND hwndOwner,
[in] LPNETRESOURCEW lpNetResource,
[in] LPCWSTR lpPassword,
[in] LPCWSTR lpUserName,
[in] DWORD dwFlags
);
Paramètres
[in] hwndOwner
Handle vers une fenêtre que le fournisseur de ressources réseau peut utiliser comme fenêtre propriétaire pour les boîtes de dialogue. Utilisez ce paramètre si vous définissez la valeur CONNECT_INTERACTIVE dans le paramètre dwFlags .
Le paramètre hwndOwner peut être NULL. Si c’est le cas, un appel à WNetAddConnection3 équivaut à appeler la fonction WNetAddConnection2 .
[in] lpNetResource
Pointeur vers une structure NETRESOURCE qui spécifie les détails de la connexion proposée, tels que des informations sur la ressource réseau, l’appareil local et le fournisseur de ressources réseau.
Vous devez spécifier les membres suivants de la structure NETRESOURCE .
La fonction WNetAddConnection3 ignore les autres membres de la structure NETRESOURCE .
[in] lpPassword
Pointeur vers une chaîne terminée par null qui spécifie un mot de passe à utiliser pour établir la connexion réseau.
Si lpPassword a la valeur NULL, la fonction utilise le mot de passe par défaut actuel associé à l’utilisateur spécifié par le paramètre lpUserName .
Si lpPassword pointe vers une chaîne vide, la fonction n’utilise pas de mot de passe.
Si la connexion échoue en raison d’un mot de passe non valide et que la valeur CONNECT_INTERACTIVE est définie dans le paramètre dwFlags , la fonction affiche une boîte de dialogue demandant à l’utilisateur de taper le mot de passe.
Windows Me/98/95 : Ce paramètre doit être NULL ou une chaîne vide.
[in] lpUserName
Pointeur vers une chaîne terminée par null qui spécifie un nom d’utilisateur pour établir la connexion.
Si lpUserName a la valeur NULL, la fonction utilise le nom d’utilisateur par défaut. (Le contexte utilisateur du processus fournit le nom d’utilisateur par défaut.)
Le paramètre lpUserName est spécifié lorsque les utilisateurs souhaitent se connecter à une ressource réseau pour laquelle un nom d’utilisateur ou un compte autre que le nom d’utilisateur ou le compte par défaut leur a été attribué.
La chaîne de nom d’utilisateur représente un contexte de sécurité. Il peut être spécifique à un fournisseur réseau.
Windows Me/98/95 : Ce paramètre doit être NULL ou une chaîne vide.
[in] dwFlags
Ensemble d’options de connexion. Les valeurs suivantes sont actuellement définies.
Valeur | Signification |
---|---|
|
Si cet indicateur est défini, le système d’exploitation peut interagir avec l’utilisateur à des fins d’authentification. |
|
Cet indicateur indique au système de ne pas utiliser de paramètres par défaut pour les noms d’utilisateur ou les mots de passe sans offrir à l’utilisateur la possibilité de fournir une alternative. Cet indicateur est ignoré, sauf si CONNECT_INTERACTIVE est également défini. |
|
Cet indicateur force la redirection d’un appareil local lors de l’établissement de la connexion.
Si le membre lpLocalName de NETRESOURCE spécifie un appareil local à rediriger, cet indicateur n’a aucun effet, car le système d’exploitation tente toujours de rediriger l’appareil spécifié. Lorsque le système d’exploitation choisit automatiquement un appareil local, le membre dwType ne doit pas être égal à RESOURCETYPE_ANY. Si cet indicateur n’est pas défini, un appareil local est automatiquement choisi pour la redirection uniquement si le réseau nécessite qu’un appareil local soit redirigé. Windows Server 2003 et Windows XP : Lorsque le système affecte automatiquement des lettres de lecteur réseau, les lettres commençant par Z:, puis Y:, et se terminant par C:. Cela réduit les collisions entre les lettres de lecteur par ouverture de session (telles que les lettres de lecteur réseau) et les lettres de lecteur globales (telles que les lecteurs de disque). Notez que les versions antérieures des lettres de lecteur attribuées par Windows commençant par C: et se terminant par Z:. |
|
La connexion de ressource réseau doit être mémorisé.
Si cet indicateur de bits est défini, le système d’exploitation tente automatiquement de restaurer la connexion lorsque l’utilisateur se connecte. Le système d’exploitation mémorise uniquement les connexions réussies qui redirigent les appareils locaux. Il ne mémorise pas les connexions qui échouent ou qui ne sont pas des connexions sans appareil. (Une connexion sans appareil se produit lorsque le membre lpLocalName a la valeur NULL ou lorsqu’il pointe vers une chaîne vide.) Si cet indicateur de bits est clair, le système d’exploitation ne restaure pas automatiquement la connexion à l’ouverture de session. |
|
Si cet indicateur est défini, le système d’exploitation invite l’utilisateur à s’authentifier à l’aide de la ligne de commande au lieu d’une interface utilisateur graphique . Cet indicateur est ignoré, sauf si CONNECT_INTERACTIVE est également défini.
Windows 2000/NT et Windows Me/98/95 : Cette valeur n’est pas prise en charge. |
|
Si cet indicateur est défini et que le système d’exploitation demande des informations d’identification, les informations d’identification doivent être enregistrées par le gestionnaire d’informations d’identification. Si le gestionnaire d’informations d’identification est désactivé pour la session d’ouverture de session de l’appelant, ou si le fournisseur réseau ne prend pas en charge l’enregistrement des informations d’identification, cet indicateur est ignoré. Cet indicateur est également ignoré, sauf si vous définissez l’indicateur CONNECT_COMMANDLINE.
Windows 2000/NT et Windows Me/98/95 : Cette valeur n’est pas prise en charge. |
Valeur retournée
Si la fonction réussit, la valeur de retour est NO_ERROR.
Si la fonction échoue, la valeur de retour est un code d’erreur système, comme l’une des valeurs suivantes.
Code de retour | Description |
---|---|
|
L’appelant n’a pas accès à la ressource réseau. |
|
L’appareil local spécifié par le membre lpLocalName est déjà connecté à une ressource réseau. |
|
Le type d’appareil local et le type de ressource réseau ne correspondent pas. |
|
La valeur spécifiée par lpLocalName n’est pas valide. |
|
La valeur spécifiée par le membre lpRemoteName n’est acceptable pour aucun fournisseur de ressources réseau, soit parce que le nom de la ressource n’est pas valide, soit parce que la ressource nommée est introuvable. |
|
Le profil utilisateur est dans un format incorrect. |
|
La valeur spécifiée par le membre lpProvider ne correspond à aucun fournisseur. |
|
Le routeur ou le fournisseur est occupé, peut-être à l’initialisation. L’appelant doit réessayer. |
|
La tentative d’établir la connexion a été annulée par l’utilisateur via une boîte de dialogue de l’un des fournisseurs de ressources réseau ou par une ressource appelée. |
|
Le système ne peut pas ouvrir le profil utilisateur pour traiter les connexions persistantes. |
|
Une entrée pour l’appareil spécifié par le membre lpLocalName se trouve déjà dans le profil utilisateur. |
|
Une erreur spécifique au réseau s’est produite. Appelez la fonction WNetGetLastError pour obtenir une description de l’erreur. |
|
Le mot de passe spécifié n’est pas valide et l’indicateur CONNECT_INTERACTIVE n’est pas défini. |
|
Impossible d’effectuer l’opération, car un composant réseau n’est pas démarré ou parce qu’un nom spécifié ne peut pas être utilisé. |
|
Le réseau n'est pas disponible. |
Remarques
La fonction WNetUseConnection est similaire à la fonction WNetAddConnection3 . La différence main est que WNetUseConnection peut sélectionner automatiquement un appareil local inutilisé pour rediriger vers la ressource réseau.
Sur Windows Server 2003 et Windows XP, les fonctions WNet créent et suppriment des lettres de lecteur réseau dans l’espace de noms d’appareil MS-DOS associé à une session d’ouverture de session, car les appareils MS-DOS sont identifiés par AuthenticationID (un
identificateur local unique, ou LUID, associé à une session d’ouverture de session.) Cela peut affecter les applications qui appellent l’une des fonctions WNet pour créer une lettre de lecteur réseau sous une ouverture de session utilisateur, mais qui interrogent les lettres de lecteur réseau existantes sous une autre ouverture de session utilisateur. Un exemple de cette situation peut être lorsque la deuxième ouverture de session d’un utilisateur est créée dans une session d’ouverture de session, par exemple, en appelant la fonction CreateProcessAsUser , et que la deuxième ouverture de session exécute une application qui appelle la fonction GetLogicalDrives . L’appel à la fonction GetLogicalDrives ne retourne pas de lettres de lecteur réseau créées par les appels de fonction WNet sous la première ouverture de session. Notez que dans l’exemple précédent, la première session d’ouverture de session existe toujours et que l’exemple peut s’appliquer à n’importe quelle session d’ouverture de session, y compris une session Des services Terminal Server. Pour plus d’informations, consultez Définition d’un nom d’appareil MS-DOS.
Sur Windows Server 2003 et Windows XP, si un service qui s’exécute en tant que LocalSystem appelle la fonction WNetAddConnection3 , le lecteur mappé est visible pour toutes les sessions d’ouverture de session utilisateur.
Pour les fournisseurs de réseau Microsoft, le membre lpRemoteName de la structure NETRESOURCE vers laquelle pointe le paramètre lpNetResource peut contenir une adresse IPv4 en notation décimale en pointillés. Voici un exemple de partage :
\192.168.1.1\share
Pour les fournisseurs de réseau Microsoft sur Windows Vista et versions ultérieures, le membre lpRemoteName de la structure NETRESOURCE vers laquelle pointe le paramètre lpNetResource peut contenir une adresse IPv6. Toutefois, le format littéral IPv6 doit être utilisé pour que l’adresse IPv6 soit analysée correctement. Une adresse littérale IPv6 se présente sous la forme suivante :
ipv6-address avec les caractères « : » remplacés par les caractères « - » suivis de la chaîne « .ipv6-literal.net ».
Par exemple, pour l’adresse IPv6 suivante :
2001:4898:9:3:c069:aa97:fe76:2449
Un exemple de partage peut être le suivant :
\2001-4898-9-3-c069-aa97-fe76-2449.ipv6-literal.net\share
D’autres fournisseurs de réseau peuvent prendre en charge le membre lpRemoteName de la structure NETRESOURCE vers laquelle pointe le paramètre lpNetResource qui contient une adresse IPv4 ou IPv6, mais cela appartient à un fournisseur réseau spécifique.
Windows 7 et Windows Server 2008 R2 : Si la fonction WNetAddConnection3 est appelée avec des informations d’identification d’utilisateur explicites spécifiées dans pUsername et lpPassword pour établir une connexion avec une ressource réseau sur un serveur spécifique, puis appelée à nouveau avec l’un de ces paramètres comme NULL (pour utiliser le nom d’utilisateur ou le mot de passe par défaut) sur le même serveur, l’appel échoue. L’erreur retournée sera ERROR_BAD_USERNAME ou ERROR_INVALID_PASSWORD.
Notes
L’en-tête winnetwk.h définit WNetAddConnection3 comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winnetwk.h |
Bibliothèque | Mpr.lib |
DLL | Mpr.dll |