回答:
コマンドプロンプトを開くか、開始/実行タイプから:
net use \\somecomputeronmynetwork\somelocation$ /delete
次のコマンドを使用して、「記憶された」接続を一覧表示することもできます。
net use
net use .../delete
/ a / 486506/290859 は「ワークステーション」サービスを再起動することが重要です(はい、このコマンドの後にログイン/ログオフすることもできますが、私にとっては「ワークステーションサービス」を再起動するだけで十分です)。サービス名:LanmanWorkstation //パス:C:\ WINDOWS \ System32 \ svchost.exe -k NetworkService -p // sc stop lanmanworkstation
sc start lanmanworkstationg
(昇格した特権で)
net use /delete
LanmanWorkstationを再起動せずに、それがされるまでしばらく時間がかかりdir \\the\deletedshare
、共有コンテンツを表示するにはなくなります。今回作成されたバイナリ検索は、13秒です。この「待機期間」は、その時間中に共有に再度アクセスすると延長されるようです。
スタートメニューを開き、検索バーに次のように入力します。
manage passwords
Windowsにログインパスワードがない場合は機能しませんので、パスワードを入力してください
Windowsは、あいまいな「セキュリティ上の理由」のために、異なる資格情報を使用して同じサーバーに同時にログオンすることを防止しようとします。
この傍受は、サーバー側ではなくクライアント側で発生します。
これを回避するには、サーバー名の代わりにサーバーのIPアドレスを使用します。個人的には、コマンドラインでこれを行います。
net use * \\myservername\mysharename /user:mydomain\theotheruser * /persistent:no
==> error - security reasons
net use * \\x.y.z.z'\mysharename /user:mydomain\theotheruser * /persistent:no
==> just fine
これにより、異なる資格情報を使用して同じ共有に2回接続することもできます。ユーザーのコンピューターからユーザーのアクセス許可の問題をデバッグするときに非常に便利です。管理者権限を持つ自分のコンピューターでc $などに接続することもできます。
共有を削除するには、右クリックするか、 net use x: /delete
しかし、これはクライアントのサーバーへの推定接続を削除しません。エクスプローラーでサーバーを参照するだけで、共有に接続しなくてもカウントされ、名前を偽装しない限り、別の資格情報を使用してそのサーバーにログオンすることはできません。
Microsoftによると、これは機能です。
フォルダへのアクセスが行われ、ユーザーがキャッシュされた(アクティブのままである)PCへの接続を削除するには、次の手順を順を追って使用する必要があります(ステップバイステップ)。
2マシンのすべてのWindowsエクスプローラーを閉じます
3コマンドプロンプトを開きます
4コマンドを実行する
ネット使用* / del
***このシーケンスで実行する必要があります。そうしないと機能しません。たとえば、コマンドプロンプトが既に開いている場合(Windowsエクスプローラーの前)、コマンドは機能しません。
Windows 7用に保存されたすべてのパスワードは、Credential Managerに保存されます。
コントロールパネル\すべてのコントロールパネルアイテム\資格情報マネージャー
ネットワーク上の場所に対してユーザー名とパスワードを使用して認証する場合、そのユーザー名とパスワードはログオンセッションのためにキャッシュされたままになります。再認証する前に、ログオフして再度ログオンする必要があります。
net use
上記の回答をご覧ください。また、Windowsエクスプローラーを使用してネットワーク共有にアクセスするための資格情報は、資格情報マネージャーに保存されません。
Remember this
資格情報を提供するときにチェックボックスをオンにすると、そこに保存されます。ただし、そのボックスはデフォルトではチェックされていません。ただし、ログインセッションを閉じて再認証する必要はないため、答えは誤解を招きます。
また、@ 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の代替として、APIの簡単なC#チュートリアルを次に示します。
プログラムによるドライブ文字のマッピング:
net use
には、接続のリストを表示するためだけに入力し、接続を選択して、ネイトが提案したような/ delete引数を追加します。