2012年4月26日木曜日

[windows]ファイル共有を別ユーザーでログインする方法。(ネットワークフォルダの切断について)


追記 2016-06-22: この記事よりもスマートな方法がこちらのブログで紹介されています。当ブログの方法はややこしいので、先に前記ブログの方法で試してみることをお勧めします。


windowsマシンから、エクスプローラーを使ってファイルサーバーのネットワークフォルダにアクセスしていて、同サーバーの権限が違う別フォルダに接続したいことがよくある。
こういう時は、別ユーザーで接続しないといけないので、一度切断した後、別ユーザーでログインしようと思ったのだが、切断の仕方がさっぱりわからず、ぐぐってもなかなかわからず苦労した。解決したので、方法をメモっときます。

先に、短めに結論を書くと、
○ ネットワークフォルダの切断
できない。(方法が見つからなかった)
○ 解決方法
切断せずに別ユーザーで接続する。やり方は、hostsファイルいじって、ファイルサーバーに別名つけた後に、エクスプローラーで\\別名 でアクセスすると、ユーザー・パスワードを聞いてきてくれるので、好きなユーザーでログインする。

以下、ぐだぐだと詳細記事です。

1、問題
 NASやlinuxのsamba共有のファイルサーバーを使っていて、フォルダによって権限が違うことがよくある。そんなサーバーに、windowsからエクスプローラーで接続していて、一度あるフォルダにネットワーク接続するとそのサーバーにはずっと最初にログインしたユーザーでの接続になってしまい、別権限のフォルダに接続できなくて困っていた。
 仕方ないので、一度windowsをログアウトしたり再起動したりしていたので、とても不便だった。

2、切断しようてしてみた
 接続を行ったん切ろうとして、共有フォルダを右クリックしてみたが切断できそうなメニューは存在しない。(windows7の場合)
 で、初めの接続を切ろうとして調べて行き当たったのが、net コマンドを使う方法だったのだが、うまくいかない。具体的には、
$ net use \\server\folder /delete
ネットワーク接続が見つかりませんでした。

NET HELPMSG 2250 と入力すると、より詳しい説明が得られます。
こんなエラーが出てしまうが、指示に従っても詳しい説明など全く得られない。
「なんじゃそりゃ」
また、
$ net use * /delete
$ net use \\server\IPC$ /delete
$ net use \\server /delete
とかやけくそでいろいろやってみたが、全部同じエラー。
「くそっ」
調べてみるとどうやら、windows2000以降では、エクスプローラーで接続したネットワークフォルダは net コマンドでは切断できないようだ。(参考:net use ○○○○ /delete でリソースが切断できない)

3、切断せずに、別ユーザーでログインする
 なんやかんやで時間食った後に見つけたのが、切断せずに別ユーザーでログインする方法(参考:同一サーバの複数の共有ディレクトリに別IDで接続する(Windows 7))
 windowsフォルダの奥深く(自分の場合 c:\windows\system32\drivers\etc\hosts)にhostsというファイルがあって、特定のip addressに別名をつけることができます。
 例えば、hostsに
192.168.0.11 server1
なんて行を追加しておくと、エクスプローラーでもブラウザでも他のコマンドでもserver1と指定すると192.168.0.11へアクセスしてくれるわけです。
で、今回の問題を解決するにあたって、仮にファイルサーバーのアドレスが192.168.0.11だった場合、↑のようにhostsファイルを変更すると、エクスプローラーで \\server1 と接続するとなんと、既に192.168.0.11で別のネットワークフォルダを開いていたとしても、エクスプローラーは別のマシンへの接続だと思ってユーザーとパスワードを聞いてきてくれます。ばんざい。
ここで、自分の好きなユーザーでログインすれば解決です。
ただし、hostsファイルはシステムファイルなのでメモ帳等のエディタを「管理者として実行」しないと変更できませんので、注意してください。
また、別名に存在するマシン名を使うとやっかいなことになるので、かぶらない名前を選んでください。

4、反省
今回手間取った敗因は、既存の接続を切断しないといけないと思って、そっち系の言葉で検索し続けたところです。まさか、切断せずに接続を増やすとも思いもよりませんでした。