none
Windwsサービスからのネットワークドライブ参照について RRS feed

  • 質問

  • C#でネットワークドライブへアクセスし、そのフォルダを監視するアプリケーションを作成したいのですが、
    そのなかで、Windowsサービスからアプリケーションを実行してネットワークドライブにアクセスする方法を調査中です。

    サービスの起動アカウントを、ログオンユーザに設定して実行したとき
    UNCパスを指定すればネットワーク上の目的のフォルダにアクセスできるのですが、
    直接ネットワークドライブを指定(W:)するとフォルダにアクセスできません。

    WNetGetConnection関数を使用して、ネットワークドライブパスからUNCパスを取得する方法を試してみましたが、
    アプリケーション単体で実行した場合、UNCパスをしました。
    しかし、サービスから実行するとやはりエラーコードが返ってきます(1201)。

    ちなみに参照するネットワークドライブは、ユーザ毎に指定できるものを目指しています。

    サービスからネットワークドライブにアクセスする方法はありますでしょうか?
    回答をよろしくお願いします。
    2009年5月22日 2:01

回答

  • Windows サービスとログオン セッションとでは、セッションが別になっているのではないでしょうか。
    ちなみに OS は何ですか?

    WNetGetConnection の解説より抜粋:
     Windows NT/Windows 2000:ネットワーク接続が Microsoft LAN Manager を使って行われたものである場合、
     接続を行ったアプリケーションと異なるログオンセッションで実行中のアプリケーションがその接続に対応するローカル装置を指定してこの関数を呼び出すと、
     関数は失敗します。戻り値は、ERROR_NOT_CONNECTED または ERROR_CONNECTION_UNAVAIL になります。

    2009年5月22日 2:37

すべての返信

  • Windows サービスとログオン セッションとでは、セッションが別になっているのではないでしょうか。
    ちなみに OS は何ですか?

    WNetGetConnection の解説より抜粋:
     Windows NT/Windows 2000:ネットワーク接続が Microsoft LAN Manager を使って行われたものである場合、
     接続を行ったアプリケーションと異なるログオンセッションで実行中のアプリケーションがその接続に対応するローカル装置を指定してこの関数を呼び出すと、
     関数は失敗します。戻り値は、ERROR_NOT_CONNECTED または ERROR_CONNECTION_UNAVAIL になります。

    2009年5月22日 2:37
  • すいません。WMIを使用することにより自己解決しました。

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

    2009年5月22日 8:07
  • こんにちは、フォーラムオペレーターの高橋です。

    totojoさん、いつもお世話になっております。

    toMas animalさん、はじめまして!
    MSDNフォーラムのご利用ありがとうございます。

    問題が解決してよかったです。

    皆様と情報を共有する為に
    問題に関連した情報を頂いたtotojoさんの投稿に、
    回答マークをつけさせて頂きました。

    不適切な場合は回答マークを削除することも可能です。

    今後ともMSDNフォーラムをよろしくお願いします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年5月29日 7:37