【VB2005 ネットワークドライブ上のファイル参照】

エクスプローラの[アドレス]入力で、
[\\hogeSrv\piyo\bar.txt]
と入力すると、
「ネットワークパスワードの入力」というダイアログが表示されます。

このダイアログを出さないようにする(突破する)コードを教えてください。
※このような認証させるロジックを知りたいです。
※もしくは、ダイアログに手入力することなく、ファイルアクセスするような方法でも良いです。


※ネットワークドライブの割り当ては避けたいです。


以上、よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:2006/12/18 20:56:40
  • 終了:2006/12/19 01:09:25

ベストアンサー

id:ardarim No.1

ardarim回答回数897ベストアンサー獲得回数1452006/12/19 00:31:55

ポイント100pt

ネットワークドライブへのアクセスは、WNet APIを使用します。


たとえば、「ネットワークパスワードの入力」というダイアログそのものも、WNetConnectionDialog()WNetConnectionDialog1()といったAPIで呼び出せます。


ダイアログを使わずに、同等の処理を行うには、WNetAddConnection2()WNetAddConnection3()などのAPIで、通常ダイアログで入力するユーザー名やパスワードを、プログラムから引数として渡してやることで、ダイアログを表示させずに接続させることができます。


ただし、.NET FrameworkではまだI/Fが提供されていないようですので、ネイティブAPI呼び出しで実現する必要があります。

既存のラッパーを使うと便利でしょう。

.NET Wrapper DLL for the WNet API - The Code Project - .NET

id:llusall

なるほど!

いけそうですね。素晴らしいです。

今日はもう寝るので明日やってみます。

ありがとうございました。

2006/12/19 01:07:44
  • id:llusall
    本日試してみました。

    どうやらネットワークドライブの割り当てのようでした。
  • id:ardarim
    回答が適切でなくて申し訳ありません。

    こちらのやり方でどうでしょうか。
    http://msdn2.microsoft.com/ja-jp/library/chf6fbt4(VS.80).aspx
  • id:ardarim
    たびたびすみません。

    WNetAddConnection2()を使用した場合、ネットワークドライブの割当てもできますが、ドライv部として割り当てないで接続だけする使い方(lpLocalNameにドライブ名でなくNULLを指定しておく)もできるようです。

    http://msdn.microsoft.com/library/ja/jpwnet/html/_win32_wnetaddconnection2.asp?frame=true
    >この文字列が空の場合や、lpLocalName が NULL の場合は、
    >ローカルデバイスのリダイレクトなしでネットワーク資源に
    >接続します。
  • id:llusall
    レス、ありがとうございます。
    WIN32のAPIリファレンスを読んでみました。
    ardarim のおっしゃるように、lpLocalNameの未指定でいけそうですね。

    本日も、遅くなってしまったので、寝てみます。
    (あとでトライしてみます。)
    お騒がせしてすみませんでした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません