Ayrıca @ rocketsarefast'ın yeni bir oturum açma girişimi olduğunda Windows'un eski ağ kimlik bilgilerini temizleyeceği yanıtını da keşfettim .
Bununla birlikte, net use "\\10.0.0.5\c$" "badpassword" /user:"baduser"
emri çok yavaş, özellikle de müşterinin sunucunun korkunç ve uygunsuz bir reddetme ile yanıt vermesi için birkaç saniye beklemesi gerektiğinde.
Benim kullanım durumunda, ben ağ paylaşımına bağlanmak için Win32 API kullanmak başardı \\Server\Share
için S:\
sürücüye. Önce sürücünün bağlantısını keser ve daha sonra, kullanıcının oturumu kapatıp farklı bir kullanıcı olarak oturum açabilmesi için kullanıcıyı Windows ağ oturum açma iletişim kutusuyla uyarır.
İşte C kodu 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;
}
İşte 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)
MinGW-w64 kullanarak derleyin - 32 ve 64 bit Windows için:
C'ye bir alternatif olarak, API'da kolay bir C # öğreticisi:
net use
bir bağlantı listesini görmek için yazabilir , ardından bir bağlantı seçebilir ve Nate'in önerdiği gibi / delete argümanını ekleyebilirsiniz.