C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

ネットワークドライブにC#アプリから再接続したい /ぼーちゃん (19/12/02(Mon) 09:46) #93280
Re[1]: ネットワークドライブにC#アプリから再接続したい /kiku (19/12/02(Mon) 09:58) #93281
  └ Re[2]: ネットワークドライブにC#アプリから再接続したい /ぼーちゃん (19/12/03(Tue) 09:17) #93287 解決済み


親記事 / ▼[ 93281 ]
■93280 / 親階層)  ネットワークドライブにC#アプリから再接続したい
□投稿者/ ぼーちゃん (18回)-(2019/12/02(Mon) 09:46:31)

分類:[C#] 

Visual studio 2017 Professional / C#
Windowsフォームアプリケーション / .NET Framework 4.7.2

こんにちは。
ネットワークドライブ上のファイルを操作するアプリを作っています。
基本的に問題なく動いているのですが、時々例外が発生することがあります。

//X:がネットワークドライブ
System.Diagnostics.Process.Start(@"X:\DOC");

System.ComponentModel.Win32Exception: '指定されたパスが見つかりません。'

調べたところ、Windowsの機能で一定時間接続していないネットワークドライブへの接続が
切断されることが原因のようでした。
https://support.microsoft.com/ja-jp/help/297684/mapped-drive-connection-to-network-share-may-be-lost

実際、例外が起きた時にはエクスプローラー上でネットワークドライブアイコンにバツマーク
が付いており、手動でエクスプローラーから開くだけで再接続され、
アプリからも接続出来るようになります。この再接続をC#のアプリから行う方法はないでしょうか。

前述の通りProcess.Startでエクスプローラーから開こうとすると例外になるのでだめでした。
URLにタイムアウト時間を延ばす方法など記述されていますが、
この設定を変更することは厳しい状況です。
ご存知の方がいましたらどうかお願いいたします。
[ □ Tree ] 返信 編集キー/

▲[ 93280 ] / ▼[ 93287 ]
■93281 / 1階層)  Re[1]: ネットワークドライブにC#アプリから再接続したい
□投稿者/ kiku (149回)-(2019/12/02(Mon) 09:58:10)
No93280 (ぼーちゃん さん) に返信

> アプリからも接続出来るようになります。この再接続をC#のアプリから行う方法はないでしょうか。

WNetAddConnection2を使ってネットワークドライブを切断してから、
再接続することでいけるかと思います。

下記あたりの記事が参考になりそうです。
https://jehupc.exblog.jp/13776105/

[ 親 93280 / □ Tree ] 返信 編集キー/

▲[ 93281 ] / 返信無し
■93287 / 2階層)  Re[2]: ネットワークドライブにC#アプリから再接続したい
□投稿者/ ぼーちゃん (19回)-(2019/12/03(Tue) 09:17:45)
No93281 (kiku さん) に返信

kiku さん
ご回答ありがとうございます。
ブログの内容を参考に上手くいきました。

ブログではフォルダに接続出来るかどうかを
ファイルコピーで例外が起きるかで判定していましたが、
Directory.Existsで試した所、例外無く判定出来ましたので
そこは変えました。

悩んでいたので助かりました、どうもありがとうございます。
解決済み
[ 親 93280 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -