5

У меня есть небольшой скрипт, который выполняется на каждой рабочей станции, который запускает defrag и chkdsk и временно подключает каждую рабочую станцию к общему сетевому ресурсу, к которому у них, как правило, нет доступа. Команда, которую я использую для подключения к ним:

net use \\server\sharename [password] /USER:domain\username P:No

Есть ли команда для входа этого пользователя из общей папки без перезагрузки компьютера?

Рабочие станции работают на Windows XP SP3

РЕДАКТИРОВАТЬ: Я использовал:

net use \\server\sharename /delete

но команда возвращает "Сетевое соединение не найдено". Тем не менее, я все еще могу перейти к \\server\sharename в адресной строке MyComputer и по-прежнему иметь полный доступ к нему.

РЕДАКТИРОВАТЬ 2: Предположим, я прочитал файлы справки для использования в сети; D

EDIT3: перезагрузка будет достаточно? Да ... однако удобнее выйти из общего ресурса вместо = D. Я знаю, что мне сложно.

4 ответа4

5
net use \\server\sharename /delete

РЕДАКТИРОВАТЬ: Чтобы заставить учетные данные быть сброшены:

net use \\server\IPC$ /delete
3
net use \\server\sharename /delete

Смотрите полную команду net use здесь.

3

Если перечисленные здесь команды net use не помогают, вместо перезагрузки вы можете просто перезапустить сервис Workstation (хотя я не уверен, как это сделать без перезапуска сервиса ):

  1. Сначала используйте соответствующие команды net use как указано выше (например, net use * /del для стрельбы из дробовика).
  2. Панель управления -> Администрирование -> Услуги
  3. Найти рабочую станцию в списке.
  4. Щелкните правой кнопкой мыши и выберите « Перезагрузить».

Если у вас есть какие-либо окна обозревателя, открытые для общей папки, или какие-либо открытые файлы, вам может потребоваться закрыть их, чтобы служба перезапустилась (если перезапуск кажется зависшим, обычно это происходит).

В качестве альтернативы вы можете перезапустить службу из командной строки:

net stop Workstation
net start Workstation
net start "Computer Browser"

Запуск Обозревателя компьютеров обычно необходим, так как остановка рабочей станции также останавливает Обозреватель компьютеров. Вы увидите, будет ли это в выводе первой команды. Снова, закрытие окон проводника и открытых файлов может быть необходимым.


Ссылка: https://social.technet.microsoft.com/Forums/windows/en-US/58494ea1-e3a0-49ab-be5c-1aa2b86f13c9/how-to-logout-from-shared-folder

0

@rocketsarefast, и я нашел другой способ очистить сетевые учетные данные. Я разместил свой ответ в этой теме:


Из ответа @ rocketsarefast я также обнаружил , что Windows удалит старые сетевые учетные данные при новой попытке входа в систему.

Однако его net use "\\10.0.0.5\c$" "badpassword" /user:"baduser" слишком медленная, особенно когда клиенту приходится ждать до нескольких секунд, чтобы сервер ответил отказом, что ужасно и неудобно.

В моем случае я смог использовать Win32 API для сопоставления общего сетевого ресурса \\Server\Share с диском S:\ . Сначала он отключает диск, а затем предлагает пользователю диалоговое окно входа в сеть Windows, чтобы человек мог выйти из системы и войти в систему как другой пользователь.

Вот код 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;
}

Вот 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-битной Windows:

В качестве альтернативы C, вот простое руководство по C # по API:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .