none
ネットワークパスを取得 RRS feed

  • 質問

  • お世話になります

    あるネットワークパスを、ネットワークドライブとして割り当ており、
    ネットワークドライブから、ネットワークパス(UNC)を取得したいと思っております。

    WNetGetConnection、WNetGetUniversalNameを使用して試みているのですが、

    1201:そのデバイスは現在接続されていませんが、接続は記憶されています。

    が返ってきます。

    何か方法、または原因がありますか。教えてください。

    • 移動 星 睦美 2014年12月3日 6:31 Visual C++ から
    2014年12月3日 5:24

回答

  • 1201とはWNetGetConnectionに書かれているERROR_CONNECTION_UNAVAILのことですよね。Remarksセクションを見よとあります。Remarksセクションには

    he calling application is running in a different logon session than the application that made the connection, a call to the WNetGetConnection function for the associated local device will fail. The function fails with ERROR_NOT_CONNECTED or ERROR_CONNECTION_UNAVAIL.

    と書かれていますがこれに該当していませんか?
    # コンソールからログオンしてドライブを割り当てて、サービスプロセスからドライブ名を調べようとしたとか。

    • 回答の候補に設定 星 睦美 2014年12月4日 0:14
    • 回答としてマーク Brillia 2014年12月4日 0:29
    2014年12月3日 7:46
  • > エクスプローラを管理者権限で実行

    ふつう、explorer.exe を実行しても、UI は新プロセスでは開かないので、意味ないと思います。

    • 回答としてマーク Brillia 2014年12月4日 0:29
    2014年12月3日 9:28
  • ただ、エクスプローラを管理者権限で実行をおこない、ネットワークドライブを付け直したのですが、管理者権限で実行する開発環境から、デバック実行では取得はできませんでした。

     コマンドプロンプトを管理者として実行して、net use コマンドを発行する。


    Jitta@わんくま同盟

    • 回答としてマーク Brillia 2014年12月4日 0:29
    2014年12月3日 12:18

すべての返信

  • フォーラム オペレーターの星 睦美です。
    Brillia さん、投稿ありがとうございます。

    ユーザーからの回答が集まりやすいように、私のほうでWindows クライアント開発 - 全般 フォーラムに移動させていただきますね。

    >1201:そのデバイスは現在接続されていませんが、接続は記憶されています。

    質問に書いていただいた上記のエラーメッセージだけでは、フォーラムの回答者が問題がなにか探るための手がかりとして少ないように思います。ほかにもエラーに関する情報がないかイベントログなどを確認してみてはいかがでしょうか。(もしエラーの情報が無ければ、出力されていないということもトラブルシューティングのための情報になります。) 実行環境のOSの種類もあわせてお知らせください。

    フォーラムのご利用方法、ヘルプ、回答のガイドラインに関するお知らせ
    ※ユーザーから参考になる回答がありましたら投稿者からの[回答としてマーク]をお願いします。

    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2014年12月3日 6:30
  • ありがとうございます。

    環境は、Windows7で、VC++2010を使用しております。

    下記のソースを実行しています

    LPCTSTR lpcPath = _T("V:");
     
    DWORD dwRet = WNetGetConnection (
            lpcPath,
            szRemoteName,
            &dwSize );
    
    if ( NO_ERROR == dwRet ) {
            // 成功した場合は結果を表示
            _tprintf ( TEXT("Local Name:  %s\nRemote Name: %s\n"),        lpcPath, szRemoteName);
    }

    2014年12月3日 6:48
  • 1201とはWNetGetConnectionに書かれているERROR_CONNECTION_UNAVAILのことですよね。Remarksセクションを見よとあります。Remarksセクションには

    he calling application is running in a different logon session than the application that made the connection, a call to the WNetGetConnection function for the associated local device will fail. The function fails with ERROR_NOT_CONNECTED or ERROR_CONNECTION_UNAVAIL.

    と書かれていますがこれに該当していませんか?
    # コンソールからログオンしてドライブを割り当てて、サービスプロセスからドライブ名を調べようとしたとか。

    • 回答の候補に設定 星 睦美 2014年12月4日 0:14
    • 回答としてマーク Brillia 2014年12月4日 0:29
    2014年12月3日 7:46
  • ご返事ありがとうございます。

    結果、取得できましたが、理解できません。

    he calling application is running in a different logon session than the application that made the connection, a call to the WNetGetConnection function for the associated local device will fail. The function fails with ERROR_NOT_CONNECTED or ERROR_CONNECTION_UNAVAIL.

    上記文章は、気になっていのですが、同じアカウントでエクスプローラから、ネットワークドライブ割り当てを行い、そのアカウント上で開発環境からのデバック実行をしていたので、特に気にしていませんでした。

    しかし、開発環境からデバック実行せずに、直接エクスプローラから実行することで、取得が成功しました。

    実は、開発環境を起動するとき、管理者権限として実行しているのですが、これが関係ありそうです。
    ユーザー権限で開発環境を実行し、デバック実行すると取得が成功しました。

    結果からすると、同じアカウントでも権限昇格前・後のログオンセッションは異なるという理解でよいのでしょうか。

    ただ、エクスプローラを管理者権限で実行をおこない、ネットワークドライブを付け直したのですが、
    管理者権限で実行する開発環境から、デバック実行では取得はできませんでした。

    ご教授ください。


    2014年12月3日 8:46
  • > エクスプローラを管理者権限で実行

    ふつう、explorer.exe を実行しても、UI は新プロセスでは開かないので、意味ないと思います。

    • 回答としてマーク Brillia 2014年12月4日 0:29
    2014年12月3日 9:28
  • ただ、エクスプローラを管理者権限で実行をおこない、ネットワークドライブを付け直したのですが、管理者権限で実行する開発環境から、デバック実行では取得はできませんでした。

     コマンドプロンプトを管理者として実行して、net use コマンドを発行する。


    Jitta@わんくま同盟

    • 回答としてマーク Brillia 2014年12月4日 0:29
    2014年12月3日 12:18
  • ご返事ありがとうございました。

    理解できました。

    2014年12月4日 0:29