none
Windows起動時のWMIアクセスについて RRS feed

  • 質問

  • OS:WindowsXP Professional
    開発環境:VisualStudio2005 Professional

    上記環境でサービスアプリケーションの開発を行っております。
    サービスの起動は自動で行っており、Windows起動時に立ち上がるようになっています。
    サービスの起動時にWMIを使用してNICの情報を取得しているのですが、WMIへのアクセスが拒否されてしまうことがあります。(されない場合もあります)

    おそらく以下のURLに該当し、権限の問題と思われますが、コードレベルでの具体的な回避策というのは存在しないのでしょうか。
    http://support.microsoft.com/kb/909444/ja


    なお、サービス本体のAccountはLocalServiceで、使用しているコードは以下のようなコードです。

    using (ManagementObjectSearcher Query= new ManagementObjectSearcher(Select Caption,MacAddress,DefaultIPGateway,IPAddress,DNSServerSearchOrder,IPSubnet From Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE))
    using (ManagementObjectCollection queryCollection = Query.Get())
    {
        //取得処理
    }

    ConnectionOptions等を使用して回避できそうにも思えるのですが、今ひとつ確証が持てません。
    上記問題について何か情報ありましたら、ご教示ください。

    2006年11月21日 1:51

すべての返信

  •  nabenabe さんからの引用

    サービスの起動は自動で行っており、Windows起動時に立ち上がるようになっています。
    サービスの起動時にWMIを使用してNICの情報を取得しているのですが、WMIへのアクセスが拒否されてしまうことがあります。(されない場合もあります)

    おそらく以下のURLに該当し、権限の問題と思われますが、コードレベルでの具体的な回避策というのは存在しないのでしょうか。
    http://support.microsoft.com/kb/909444/ja

    「取得できること」もあるなら、権限の問題では無い様に思います。

    単純に、サービスの起動順序や起動状態による問題ではないでしょうか?

    件のサービスを、WMI に依存するように設定しているでしょうか?

    WMI 起動前に WMI にアクセスに行けば当然NGとなるはずです。

     

    2006年11月21日 4:41
    モデレータ
  • 渋木様、ありがとうございます。

    早速、WMIと関連付けてみましたが、うまくいきませんでした。

    そこで、RPC関連に関係性があるとにらみ、Windows FireWallと関連付けてみました。
    そうすると、まったく問題なく動作するようになりました。

    大きなヒントを下さったおかげで無事解決することができました。

    重ねて、御礼申し上げます。
    ありがとうございました。

    2006年11月21日 5:44
  •  nabenabe さんからの引用

    早速、WMIと関連付けてみましたが、うまくいきませんでした。
    そこで、RPC関連に関係性があるとにらみ、Windows FireWallと関連付けてみました。
    そうすると、まったく問題なく動作するようになりました。

    何故でしょうね? Windows Fire Wall が未起動なら「つーつー」になるはずなんですが。。。

    まぁ、Windows Fire Wall が中途半端に起動していると通信がブロックされてしまうかもしれませんね。

    # 起動中は余分な通信をブロックするようになっのかな?>Windows XP SP2/Windows Server 2003 以降

     

    2006年11月21日 11:47
    モデレータ