मैंने @ rocketsarefast के उत्तर से यह भी पता लगाया है कि जब कोई नया लॉगिन प्रयास होता है, तो Windows पुराने नेटवर्क क्रेडेंशियल्स को हटा देगा।
हालांकि, उसकी net use "\\10.0.0.5\c$" "badpassword" /user:"baduser"
कमांड बहुत धीमी है, खासकर जब क्लाइंट को सर्वर के लिए अस्वीकृति के साथ प्रतिक्रिया करने के लिए कई सेकंड तक इंतजार करना पड़ता है, जो भयानक और असुविधाजनक है।
मेरे उपयोग के मामले में, मैं ड्राइव में नेटवर्क शेयर \\Server\Share
को मैप करने के लिए Win32 API का उपयोग करने में सक्षम था S:\
। यह पहले ड्राइव को डिस्कनेक्ट करता है और फिर उपयोगकर्ता को विंडोज नेटवर्क लॉगिन डायलॉग के साथ प्रेरित करता है ताकि व्यक्ति लॉगआउट कर सके और एक अलग उपयोगकर्ता के रूप में लॉगिन कर सके।
यहाँ सी कोड है 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;
}
यहाँ है 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 का उपयोग कर संकलन - 32 और 64 बिट विंडोज के लिए:
C के विकल्प के रूप में, यहाँ API पर एक आसान C # ट्यूटोरियल है:
net use
कनेक्शन की एक सूची देखने के लिए टाइप कर सकते हैं, फिर एक कनेक्शन चुन सकते हैं और / हटाए गए तर्क को जोड़ सकते हैं जैसे कि नैट का सुझाव दिया गया है।