net use \server\sharename /delete
EDITAR: Para fazer com que as credenciais sejam liberadas:
net use \server\IPC$ /delete
Eu tenho um pequeno script que é executado em cada estação de trabalho que executa defrag e chkdsk e conecta cada estação de trabalho temporariamente a um compartilhamento de rede que eles, normalmente, não têm acesso. O comando que eu uso para se conectar a eles é:
net use \server\sharename [password] /USER:domain\username P:No
Existe um comando para desconectar o usuário do compartilhamento de unidade sem reiniciar o computador?
Estações de trabalho executadas no Windows XP SP3
EDIT: Eu usei:
net use \server\sharename /delete
mas o comando retorna "A conexão de rede não pode ser encontrada". No entanto, ainda posso navegar para \server\sharename
na linha de endereço do MyComputer e ter acesso total a ele ainda.
EDIT2: Suponha que eu tenha lido os arquivos de ajuda para uso da rede; D
EDIT3: Uma reinicialização seria suficiente? Sim ... no entanto, é mais conveniente fazer o logout do usuário no compartilhamento = D. Eu sei que sou difícil.
net use \server\sharename /delete
Veja o comando completo net use aqui .
Se os comandos net use
listados aqui não resolverem o problema, em vez de reinicializar, basta reiniciar o serviço Estação de trabalho (não sei como fazer isso sem a reinicialização do serviço ):
net use
apropriados, como acima (por exemplo, net use * /del
para a abordagem shotgun). Se você tiver janelas do explorer abertas para a pasta compartilhada ou qualquer arquivo aberto, talvez seja necessário fechá-las para que o serviço seja reiniciado (se a reinicialização parecer travar, geralmente é por isso).
Como alternativa, você pode reiniciar o serviço na linha de comando com:
net stop Workstation
net start Workstation
net start "Computer Browser"
O navegador de computador é normalmente necessário, pois parar Workstation também pára Computer Browser . Você verá se isso acontece na saída do primeiro comando. Novamente, fechar as janelas do explorador e abrir arquivos pode ser necessário.
Referência: link
@rocketsarefast e descobri outra maneira de limpar as credenciais da rede. Eu postei minha resposta neste tópico:
Como faço para remover credenciais de login para um local de rede no Win7?:
Eu também descobri em @responde do rocketsarefast que o Windows limpará as credenciais de rede antigas quando houver uma nova tentativa de login.
No entanto, seu comando net use "\10.0.0.5\c$" "badpassword" /user:"baduser"
é muito lento, especialmente quando o cliente precisa esperar vários segundos até que o servidor responda com uma rejeição, o que é terrível e inconveniente.
Para meu caso de uso, consegui usar a API do Win32 para mapear o compartilhamento de rede \Server\Share
para a unidade S:\
. Ele desconecta a unidade primeiro e, em seguida, solicita ao usuário a caixa de diálogo de login da rede do Windows para que a pessoa possa fazer logout e login como um usuário diferente.
Aqui está o código 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;
}
Aqui está o 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)
Compile usando MinGW-w64 - para Windows de 32 e 64 bits:
Como uma alternativa ao C, aqui está um tutorial simples sobre o C # na API:
Mapeando uma letra de unidade por programação:
Tags windows-xp network-shares