DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ネットワーク接続の遮断

環境/言語:[VISTA SP1 Framework3.5 SP1]
分類:[.NET]

.net2008 C#で開発しています

現在、ネットワークがつながっているサーバーへ接続(user/pswあり)し、ファイルをコピーしているのですが、

WNetConnection3で接続し、
WNetCancelConnection2で切断を行っております

この際、WnetCancelConnection2("接続パス",0,true)
で切断でNO_ERRORで帰ってくるのですが、
XP Professional では即切断され、
「ファイル名を指定して実行」
でパスを打っても切断されているのでユーザーとパスワードを聞いてきます
が、

Vista Business SP1 で実行させると
正常に切断されたように返ってきますが実行後10秒くらい前に
「ファイル名を指定して実行」
をするとパスワードを聞いてこず見えてしまいます

(1度開いたとしても)10秒くらい過ぎてまた
「ファイル名を指定して実行」
をするとパスワードを聞いてきます

これはどうしようもないのでしょうか?
何か対策がありますでしょうか?
もしかしてVISTAのSP2では対処されてるのでしょうか・・・・

ちなみにプログラムからではなく、スタートメニューから
「ファイル名を指定して実行」
でユーザー/パスを指定して(保存はしない)開いても
閉じた後もしばらく接続されてしまいます


ご助言よろしくお願いいたします
う〜ん・・・

もっと詳細なこと知りたいんですが、テストしてみて、同様の
事象が発生することを確認しました。

ただ、やり方に問題があるのですが、これをバグと言うのかど
うか・・・

Win32 API ではなく、コマンドレベル(DOS窓)にて・・・

サーバー  :Win2008 Server SP1 SV2008とする
クライアント:Vista Ultimate SP2

サーバー側でとあるドライブのフォルダを共有設定しておく。
FOLDERと言う共有名にする。

1. NET USE Z: \\SV2008\FOLDER /USER:xxxxxxxx yyyyyyyy
  として、認証・接続する

2. ここがミソ!
  例えば・・・
  copy *.txt \\SV2008\FOLDER
  と実行する。認証接続したZ:ドライブとしては行わない。

3. NET USE Z: /DELETE
  を実行し、切断する。

4. 即座に、再度・・・
  copy *.txt \\SV2008\FOLDER
  とすると、上書きするか・・・と聞いてくる。
  で、y とすると、コピーできてしまう。

5. 少々時間が経過すると・・・
  再度、copy ... としても・・・
  ログオン失敗: ユーザー名を認識できないか、
  またはパスワードが間違っています。
  とエラー表示され、できない。

● 上記の・・・
  copy *.txt \\SV2008\FOLDER
  の部分を
  copy *.txt z:
  とすると、切断後はz:が存在しないので、確実に
  失敗する。

● 実際にどのようなコードを書かれているのか解らないが
  無理やりやろうとすれば、切断直後にアクセスできてし
  まう。

  これはバグだと思うんですが・・・

※ 有識者の方、如何?

以上。
オショウさんありがとうございました
ドライブ接続はしておらず、直接 \\サーバー名\フォルダ名
で接続しておりました。

とりあえずクライアントさんにはしょうがないということでOKをいただきました
「ファイルを指定実行」で実行でも同様に切断直後は接続できてしまうので
しょうがないと・・・・
10秒程度待てば接続できないのでよしとしていただきました

■No26105に返信(オショウさんの記事)
> う〜ん・・・
>
> もっと詳細なこと知りたいんですが、テストしてみて、同様の
> 事象が発生することを確認しました。
>
> ただ、やり方に問題があるのですが、これをバグと言うのかど
> うか・・・
>
> Win32 API ではなく、コマンドレベル(DOS窓)にて・・・
>
> サーバー  :Win2008 Server SP1 SV2008とする
> クライアント:Vista Ultimate SP2
>
> サーバー側でとあるドライブのフォルダを共有設定しておく。
> FOLDERと言う共有名にする。
>
> 1. NET USE Z: \\SV2008\FOLDER /USER:xxxxxxxx yyyyyyyy
>   として、認証・接続する
>
> 2. ここがミソ!
>   例えば・・・
>   copy *.txt \\SV2008\FOLDER
>   と実行する。認証接続したZ:ドライブとしては行わない。
>
> 3. NET USE Z: /DELETE
>   を実行し、切断する。
>
> 4. 即座に、再度・・・
>   copy *.txt \\SV2008\FOLDER
>   とすると、上書きするか・・・と聞いてくる。
>   で、y とすると、コピーできてしまう。
>
> 5. 少々時間が経過すると・・・
>   再度、copy ... としても・・・
>   ログオン失敗: ユーザー名を認識できないか、
>   またはパスワードが間違っています。
>   とエラー表示され、できない。
>
> ● 上記の・・・
>   copy *.txt \\SV2008\FOLDER
>   の部分を
>   copy *.txt z:
>   とすると、切断後はz:が存在しないので、確実に
>   失敗する。
>
> ● 実際にどのようなコードを書かれているのか解らないが
>   無理やりやろうとすれば、切断直後にアクセスできてし
>   まう。
>
>   これはバグだと思うんですが・・・
>
> ※ 有識者の方、如何?
>
> 以上。
>
>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板