web-dev-qa-db-ja.com

再起動せずにネットワーク共有ドライブからログアウトしますか?

Defragとchkdskを実行し、各ワークステーションを通常はアクセスできないネットワーク共有に一時的に接続する、各ワークステーションで実行される小さなスクリプトがあります。それらに接続するために使用するコマンドは次のとおりです。

Net Use \\server\sharename [password] /USER:domain\username P:No

コンピュータを再起動せずにそのユーザーをドライブ共有からログアウトするコマンドはありますか?

ワークステーションはWindowsで実行されますXP SP3

編集:私は使用しました:

Net Use \\server\sharename /delete

ただし、コマンドは「ネットワーク接続が見つかりません」を返します。ただし、MyComputerアドレス行の\\server\sharenameに移動して、フルアクセスすることはできます。

EDIT2:NetUseのヘルプファイルを読んだと仮定します; D

EDIT3:再起動で十分でしょうか?はい...ただし、= Dではなく共有からユーザーをログアウトする方が便利です。私は難しいことを知っています。

6
Mechaflash
Net Use \\server\sharename /delete

編集:資格情報をフラッシュさせるには:

Net Use \\server\IPC$ /delete
5
BillP3rd

ここにリストされているNet Useコマンドでうまくいかない場合は、再起動する代わりに、Workstationサービスを再起動できます(これを行う方法がわかりません- サービスの再起動なし ただし):

  1. まず、上記の適切なNet Useコマンドを使用します(例:ショットガンアプローチの場合はNet Use * /del)。
  2. コントロールパネル->管理ツール->サービス
  3. リストからワークステーションを見つけます。
  4. 右クリックしてRestartを選択します。

共有フォルダー用にエクスプローラーウィンドウを開いている場合、または開いているファイルがある場合は、サービスを再起動するためにそれらを閉じる必要がある場合があります(再起動がハングしているように見える場合は、通常これが理由です)。

または、コマンドラインで次のコマンドを使用してサービスを再起動することもできます。

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

Computer Browserstartは通常必要です。停止Workstationも停止しますComputer Browser 。最初のコマンドからの出力でそれが行われるかどうかがわかります。ここでも、エクスプローラウィンドウを閉じてファイルを開く必要がある場合があります。


参照: https://social.technet.Microsoft.com/Forums/windows/en-US/58494ea1-e3a0-49ab-be5c-1aa2b86f13c9/how-to-logout-from-shared-folder

4
Jason C
Net Use \\server\sharename /delete

完全なNetUseコマンドを参照してください ここ

3
MaQleod

@rocketsarefastと私は、ネットワーク資格情報をクリアする別の方法を発見しました。私はこのスレッドに私の答えを投稿しました:


また、 @ rocketsarefastの回答 から、新しいログインが試行されると、Windowsが古いネットワーク資格情報をクリアすることも発見しました。

しかし、彼のNet Use "\\10.0.0.5\c$" "badpassword" /user:"baduser"コマンドは遅すぎます。特に、サーバーが拒否で応答するまでクライアントが最大数秒待たなければならない場合は、ひどく不便です。

私のユースケースでは、Win32APIを使用してネットワーク共有をマッピングすることができました\\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の代わりに、APIに関する簡単なC#チュートリアルを次に示します。

0
XP1