質問者
Windows起動時のWMIアクセスについて

質問
-
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等を使用して回避できそうにも思えるのですが、今ひとつ確証が持てません。
上記問題について何か情報ありましたら、ご教示ください。
すべての返信
-
nabenabe さんからの引用 サービスの起動は自動で行っており、Windows起動時に立ち上がるようになっています。
サービスの起動時にWMIを使用してNICの情報を取得しているのですが、WMIへのアクセスが拒否されてしまうことがあります。(されない場合もあります)
おそらく以下のURLに該当し、権限の問題と思われますが、コードレベルでの具体的な回避策というのは存在しないのでしょうか。
http://support.microsoft.com/kb/909444/ja「取得できること」もあるなら、権限の問題では無い様に思います。
単純に、サービスの起動順序や起動状態による問題ではないでしょうか?
件のサービスを、WMI に依存するように設定しているでしょうか?
WMI 起動前に WMI にアクセスに行けば当然NGとなるはずです。
-
nabenabe さんからの引用
早速、WMIと関連付けてみましたが、うまくいきませんでした。
そこで、RPC関連に関係性があるとにらみ、Windows FireWallと関連付けてみました。
そうすると、まったく問題なく動作するようになりました。何故でしょうね? Windows Fire Wall が未起動なら「つーつー」になるはずなんですが。。。
まぁ、Windows Fire Wall が中途半端に起動していると通信がブロックされてしまうかもしれませんね。
# 起動中は余分な通信をブロックするようになっのかな?>Windows XP SP2/Windows Server 2003 以降