2

ネットワークドライブ(\servernameまたは\ipadress)にアクセスしようとしています。ドライブはアプリケーションを介してのみアクセスされ、ネットワークドライブへのログインはアプリケーションによってのみ使用されることになっているという考え方です。これまでのところ、私が欲しいもののように見えるWNetUseConnection関数(http://msdn.microsoft.com/en-us/library/aa385482%28VS.85%29.aspx )のみを見つけました。残念ながら、私はそれを動作させることができません。コードは次のようになります。

   NETRESOURCE nr;;
   nr.dwType = RESOURCETYPE_DISK;
   wchar_t remoteName[] = L"\\\\myremotenetworkdrive";
   nr.lpRemoteName = remoteName;
   wchar_t pswd[] = L"mypswd";
   wchar_t usrnm[] = L"usrname";

   int ret = WNetUseConnection(NULL,  &nr, pswd, usrnm, 0, NULL, NULL, NULL);
   std::cerr << "return code: " << ret << std::endl;

戻りコードは最初は1200(ERROR_BAD_DEVICE)であり、別の関数呼び出しが487(ERROR_INVALID_ADDRESS)に変更された後です。アドレス(iamが4つのバックスラッシュをそこに置く権利があるが、2つを使用して、またはまったく使用せずに試した場合)ユーザー名とpswdは正しいです。

だから基本的に私の質問は:どうすればoboveコードを機能させることができますか?私の仕事を考えると、これは正しいアプローチですか(そうでない場合はどうしますか)?

4

1 に答える 1

2

構造をクリアするNETRESOURCE(またはすべてのメンバーを直接初期化する)必要があると思います。他の値を設定する前に memset が役立つ場合があります。

memset( &nr, 0, sizeof( nr ));

さらに、コメントで指摘されているように共有名を指定する必要があります。

wchar_t remoteName[] = L"\\\\server\\share";

また、特定のドライブ文字に関連付ける場合は、このメンバーを設定できます。

nr.lpLocalName = L"z:";

構造体をクリアしたり何らかの方法で初期化したりしないと、その lpLocalName などの要素に「ランダムな」スタック データが含まれ、未定義の動作が発生します。

于 2011-01-20T15:35:09.023 に答える