J'ai juste essayé d'accéder à un dossier comme ceci:
\\somecomputeronmynetwork\somelocation$
Lorsque je me rends à cet emplacement, on me demande un nom d'utilisateur et un mot de passe.
J'en ai mis un dedans, et ça m'a bien permis.
Maintenant, je dois supprimer cette connexion, afin de pouvoir essayer un nom d'utilisateur et un mot de passe différents.
Quelle est la façon la plus simple de procéder?
Ouvrez une invite de commande ou à partir du type de démarrage/exécution:
Net Use \\somecomputeronmynetwork\somelocation$ /delete
Vous pouvez également utiliser la commande suivante pour répertorier les connexions "mémorisées":
Net Use
Ouvrez votre menu de démarrage, dans le type de barre de recherche:
manage passwords
Cela ne fonctionnera pas si votre Windows n'a pas de mot de passe de connexion, alors mettez un mot de passe dessus
Windows essaie d'empêcher la connexion au même serveur avec des informations d'identification différentes en même temps, pour une obscure "raison de sécurité".
Cette interception se produit côté client, pas côté serveur.
Vous pouvez contourner cela en utilisant l'adresse IP du serveur au lieu du nom de serveur. Personnellement, je fais cela en ligne de commande:
Net Use * \\myservername\mysharename /user:mydomain\theotheruser * /persistent:no
==> error - security reasons
Net Use * \\x.y.z.z'\mysharename /user:mydomain\theotheruser * /persistent:no
==> just fine
De cette façon, vous pouvez même vous connecter deux fois au même partage, avec des informations d'identification différentes. Incroyablement utile lorsque vous essayez de déboguer des problèmes d'autorisation d'utilisateur à partir de l'ordinateur de l'utilisateur. Fonctionne même pour se connecter, disons c $, sur votre propre ordinateur avec des droits d'administrateur.
Vous supprimez un partage en cliquant dessus avec le bouton droit de la souris ou Net Use x: /delete
Mais: cela ne supprime pas la connexion présumée de votre client au serveur. La simple navigation sur le serveur dans l'Explorateur, sans même se connecter à un partage, compte et vous empêche d'utiliser une autre information d'identification pour vous connecter à ce serveur, sauf si vous masquez le nom.
Selon Microsoft, il s'agit d'une fonctionnalité.
Pour supprimer une connexion à un PC où elle a été établie pour accéder à un dossier et où l'utilisateur a été mis en cache (c'est-à-dire reste actif), il faut utiliser rigoureusement la procédure suivante (étape par étape):
2 Fermez toutes les fenêtres Explorateur de la machine
3 Ouvrez l'invite de commande
4 Exécutez la commande
Utilisation nette */del
*** Doit être fait dans cette séquence, sinon ne peut pas fonctionner. Par exemple, si l'invite de commande est déjà ouverte (avant l'Explorateur Windows), la commande ne fonctionnera pas.
J'utilise de faux identifiants pour vraiment désactiver l'accès.
Net Use * /d /y
Net Use "\\10.0.0.5\c$" "badpassword" /user:"baduser"
Net Use * /d /y
cela semble remplacer les anciennes informations d'identification et force Explorer à essayer d'utiliser les nouvelles informations d'identification incorrectes.
Essayez ceci, cela peut fonctionner sur Windows 7 [cela fonctionne sur XP]. Tapez simplement ceci dans le Démarrer-> Exécuter-> contrôle keymgr.dll
Cela ouvrira une fenêtre où dans le mot de passe et les noms d'utilisateur stockés, vous pourrez les supprimer.
Tous les mots de passe enregistrés pour Windows 7 sont enregistrés dans Credential Manager.
Panneau de configuration\Tous les éléments du panneau de configuration\Gestionnaire d'informations d'identification
Si vous vous authentifiez avec un nom d'utilisateur et un mot de passe auprès d'un emplacement réseau, ce nom d'utilisateur et ce mot de passe resteront mis en cache pour votre session de connexion. Vous devrez vous déconnecter puis vous reconnecter avant de pouvoir vous réauthentifier.
Dans Windows 10 (Powershell 5+), vous pouvez désormais également utiliser Remove-SmbMapping
.
Remove-SmbMapping -RemotePath \\somecomputeronmynetwork\somelocation$
Consultez également Get-Command *Smb*
.
J'ai également découvert à partir de @ la réponse de @ rocketsarefast que Windows effacera les anciennes informations d'identification du réseau lors d'une nouvelle tentative de connexion.
Cependant, sa commande Net Use "\\10.0.0.5\c$" "badpassword" /user:"baduser"
Est beaucoup trop lente, surtout lorsque le client doit attendre jusqu'à plusieurs secondes pour que le serveur réponde par un rejet, ce qui est terrible et peu pratique.
Pour mon cas d'utilisation, j'ai pu utiliser l'API Win32 pour mapper le partage réseau \\Server\Share
Sur le lecteur S:\
. Il déconnecte d'abord le lecteur, puis invite l'utilisateur avec la boîte de dialogue de connexion au réseau Windows afin que la personne puisse se déconnecter et se connecter en tant qu'utilisateur différent.
Voici le code C main.c
:
#ifndef UNICODE
#define UNICODE
#endif
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#define _WIN32_IE 0x0500
#pragma comment(lib, L"mpr.lib")
#include <windows.h>
//#include <stdio.h>
int wmain(const size_t argc, const wchar_t** argv) {
NETRESOURCE networkResource = {0};
networkResource.dwType = RESOURCETYPE_DISK;
networkResource.lpLocalName = L"S:";
networkResource.lpRemoteName = L"\\\\Server\\Share";
networkResource.lpProvider = NULL;
DWORD result = 0;
result = WNetCancelConnection2(networkResource.lpLocalName, CONNECT_UPDATE_PROFILE, TRUE);
// wprintf(L"WNetCancelConnection2 result: %d\n", result);
result = WNetAddConnection2(&networkResource, NULL, NULL, CONNECT_INTERACTIVE | CONNECT_Prompt);
// wprintf(L"WNetAddConnection2 result: %d\n", result);
// getchar();
return EXIT_SUCCESS;
}
Voici le CMakeLists.txt
:
cmake_minimum_required(VERSION 3.7)
project(MapNetworkDrive)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c11 -g3 -pedantic -Wall -Wextra -O0")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS} -municode -mwindows")
set(SOURCE_FILES main.c)
add_executable(MapNetworkDrive ${SOURCE_FILES})
target_link_libraries(MapNetworkDrive mpr.lib)
Compiler à l'aide de MinGW-w64 - pour Windows 32 et 64 bits:
Comme alternative à C, voici un tutoriel C # simple sur l'API:
Mappage d'une lettre de lecteur par programme:
Vous pouvez, bien sûr, supprimer votre connexion en faisant
Net Use \\somemachine\someshare /d
Mais vous voudrez probablement vous reconnecter éventuellement aussi. En outre, si vous avez mis en cache les informations d'identification sur le partage réseau, alors lorsque vous rétablissez la connexion, vous pouvez vous retrouver confronté à l'une de ces erreurs:
L'erreur système 1272 s'est produite.
Vous ne pouvez pas accéder à ce dossier partagé car les politiques de sécurité de votre organisation bloquent l'accès invité non authentifié. Ces politiques aident à protéger votre PC contre les appareils dangereux ou malveillants sur le réseau.
ou
L'erreur système 1219 s'est produite.
Les connexions multiples à un serveur ou à une ressource partagée par le même utilisateur, en utilisant plusieurs noms d'utilisateur, ne sont pas autorisées. Déconnectez toutes les connexions précédentes au serveur ou à la ressource partagée et réessayez.
Donc, à la place, je suggère de résoudre le problème sans redémarrer en procédant comme suit:
net stop workstation
net start workstation
Cela a l'avantage supplémentaire que bien que vous déconnectez tous les partages existants, ils ne seront pas oubliés comme ils le feraient si vous les aviez supprimés avec quelque chose comme Net Use * /d
.
Si vous n'aimez pas les choses en ligne de commande, vous pouvez également redémarrer le service Workstation en allant directement à Services:
services
, appuyez sur EntréeEssayez ensuite votre Net Use \\somemachine\someshare /user:someuser
à nouveau pour obtenir une nouvelle invite pour les informations d'identification.