goo blog サービス終了のお知らせ 

汝、忘れることなかれ。ブログをね(;・∀・)

なんでも書きます。なんでも放置します(ぉぃ
回答がほしい方はあきらめて、回れ右してください orz

WNetAddConnection2の使い方【ハマリ編】

2012-01-16 03:35:03 | 日記
仕事上でネットワーク上のPCのフォルダからファイルを取得する必要がありました。

最初はフォルダの共有設定でどうにかなるだろ、なんて考えていました。
アプリの動作確認の時に問題なし!と思っていたんですが。

ファイルコピーがログインエラーではじかれた…。
納品日近いのに orz


で、ネットで調べてみるとAPIのWNetAddConnection2を使う必要があるらしい。

【WNetAddConnection2について】
http://msdn.microsoft.com/ja-jp/library/cc446983.aspx

それならとネットを検索してプログラムを作成したのですが…、
エラーコード:86 (指定したパスワードは無効です)
でどうしてもはじかれる。

参考にしたサイトではこんなので引っかかっている人はいない。。。
どういうことだろうと、さんざん悩んだ挙句、以下が原因でした。

Public Declare Auto Function WNetAddConnection2 Lib "mpr.dll" _
Alias "WNetAddConnection2A" (ByRef lpNetResource As NETRESOURCE, _
ByVal lpPassword As String, ByVal lpUserName As String, _
ByVal dwFlags As Integer) As Integer


どこかのサイトでAuto使いなよ!みたいなアドバイスあったので入れていたんですが、
これいれちゃうとどうやらNGみたいです。

送信するパスワードがAutoで指定されたコード体系に変換されるためっぽい。
指定しない場合にはAsciiで暗黙的に呼び出されるんですが、
AutoだとOSの標準で呼び出されるようです。

ちなみに開発環境及びテスト環境はは

OS : Windows7 64Bit Professional
Soft: Microsoft Visual Basic 2010 Express

接続元:Windows7 64Bit Home
接続先:Windows7 64Bit Professional
ネットワーク構成:ワークグループ


だから中途半端な知識でやるとこういった基本部分で不具合出してしまうんですよね。。。
解決するのにほぼ2日要しました。
すなおに Auto なんていれてなければよかった orz



【追記】
開発中にエラーコード内容がわからず困っていたところ以下のサイトを発見し、確認しました。
ありがたやありがたや。

【Win32エラーコード一覧】
http://ir9.jp/prog/ayu/win32err.htm

Microsoftもページぐらい用意してくれてもいいと思うのは、自分だけでしょうか?




最新の画像もっと見る

コメントを投稿