C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C#でのWMI情報取得


(過去ログ 51 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■28023 / inTopicNo.1)  C#でのWMI情報取得
  
□投稿者/ 駆け出し (1回)-(2008/11/18(Tue) 23:28:31)

分類:[C#] 

下のようなサンプルコードをC#に直したいのですが行き詰ってます



Dim AvpSet As SWbemObjectSet
Dim Avp As SWbemObject
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim MesStr As String

Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer(, "Root\SecurityCenter")

Set AvpSet = Service.ExecQuery("Select * From AntiVirusProduct")

For Each Avp In AvpSet

MesStr = MesStr & vbCrLf & "製造元:" & Avp.CompanyName & vbCrLf & _
"アンチウイルスソフト名:" & Avp.DisplayName & vbCrLf & _
"バージョン:" & Avp.versionNumber & vbCrLf
Next

MsgBox "インストールされているアンチウイルスソフトの情報です。" & _
vbCrLf & MesStr & vbCrLf & "ですよ。"

Set AvpSet = Nothing
Set Avp = Nothing
Set Locator = Nothing
Set Service = Nothing


______________________________________________________________



ManagementClass managementClass = new ManagementClass("Root\\SecurityCenter\\AntiVirusProduct");
ManagementObjectCollection managementObj = managementClass.GetInstances();

としてみたり、

ConnectionOptions option = new ConnectionOptions();
ManagementScope scope = new ManagementScope("Root\\SecurityCenter");
ObjectQuery query = new ObjectQuery("SELECT * FROM AntiVirusProduct");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope,query);
ManagementObjectCollection moCollection = searcher.Get();

としてみましたが、何も値を取れませんでした。
やり方が根本的に違うのか、単純にManagementClassやManagementScopeの()の中の設定がおかしいのか分かりません。
アドバイスよろしくお願いします。
引用返信 編集キー/
■28036 / inTopicNo.2)  Re[1]: C#でのWMI情報取得
□投稿者/ 魔界の仮面弁士 (893回)-(2008/11/19(Wed) 09:24:03)
No28023 (駆け出し さん) に返信
> 下のようなサンプルコードをC#に直したいのですが行き詰ってます
これって、COM 版の WMI ライブラリですね。
(VB.NET では無く) VB6 / VBA のコードを参考にしているのかな?

> アドバイスよろしくお願いします。
すみません。アドバイスの仕方が思いつかないので…実装例を書いてしまいます。

using System;
using System.Management;

class Class1
{
    static void Main()
    {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(
            @"\\.\ROOT\SecurityCenter", "Select * from AntiVirusProduct");
        foreach (ManagementObject o in searcher.Get())
        {
            Console.WriteLine("製造元:{0}", o["CompanyName"]);
            Console.WriteLine("アンチウイルスソフト名:{0}", o["DisplayName"]);
            Console.WriteLine("バージョン:{0}", o["versionNumber"]);
        }
        Console.ReadKey();
    }
}

引用返信 編集キー/
■28037 / inTopicNo.3)  Re[1]: C#でのWMI情報取得
□投稿者/ やじゅ (784回)-(2008/11/19(Wed) 09:34:02)
やじゅ さんの Web サイト
2008/11/19(Wed) 09:39:19 編集(投稿者)
2008/11/19(Wed) 09:39:11 編集(投稿者)

No28023 (駆け出し さん) に返信

「AntiVirusProduct C# WMI」で検索してみました。

下記サイトの2番目のコードではどうでしょうか?
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/d555f390-dd75-4604-b653-df0a9f4c2fa3/

追記:
私が回答を探している間に、魔界の仮面弁士さんが回答されたようですので、記念に載せておきます。
引用返信 編集キー/
■28111 / inTopicNo.4)  Re[2]: C#でのWMI情報取得
□投稿者/ 駆け出し (2回)-(2008/11/19(Wed) 23:45:49)
駆け出し さんの Web サイト
No28036 (魔界の仮面弁士 さん) に返信

> これって、COM 版の WMI ライブラリですね。
> (VB.NET では無く) VB6 / VBA のコードを参考にしているのかな?
http://www.wmifun.net/sample/antivirusproduct.html というサイトのサンプルコードです。
VB6だそうです。


> すみません。アドバイスの仕方が思いつかないので…実装例を書いてしまいます。
>
> using System;
> using System.Management;
>
> class Class1
> {
> static void Main()
> {
> ManagementObjectSearcher searcher = new ManagementObjectSearcher(
> @"\\.\ROOT\SecurityCenter", "Select * from AntiVirusProduct");
> foreach (ManagementObject o in searcher.Get())
> {
> Console.WriteLine("製造元:{0}", o["CompanyName"]);
> Console.WriteLine("アンチウイルスソフト名:{0}", o["DisplayName"]);
> Console.WriteLine("バージョン:{0}", o["versionNumber"]);
> }
> Console.ReadKey();
> }
> }

コードありがとうございます。
ManagementObjectSearcher を使うのですか。
うまくいきました。

応用で
new ManagementClass(@"\\.\ROOT\SecurityCenter","AntiVirusProduct")
としたらうまくいくかと思ったのですが、だめでした。
root/cimv2 でしか使えないという事なんでしょうか?

引用返信 編集キー/
■28112 / inTopicNo.5)  Re[2]: C#でのWMI情報取得
□投稿者/ 駆け出し (3回)-(2008/11/19(Wed) 23:51:42)
駆け出し さんの Web サイト
No28037 (やじゅ さん) に返信
普段googleで検索するときは日本語のページのみ表示としていたので、英語のページは探したことがありませんでした。
しかし、教えていただいたページのように英語のページも調べるようにしたほうがよさそうですね。
ありがとうございました。
引用返信 編集キー/
■28200 / inTopicNo.6)  Re[3]: C#でのWMI情報取得
□投稿者/ 駆け出し (4回)-(2008/11/21(Fri) 01:25:28)
駆け出し さんの Web サイト
No28111 (駆け出し さん) に返信
> ■No28036 (魔界の仮面弁士 さん) に返信
>
>>これって、COM 版の WMI ライブラリですね。
>>(VB.NET では無く) VB6 / VBA のコードを参考にしているのかな?
> http://www.wmifun.net/sample/antivirusproduct.html というサイトのサンプルコードです。
> VB6だそうです。
>
>
>>すみません。アドバイスの仕方が思いつかないので…実装例を書いてしまいます。
>>
>>using System;
>>using System.Management;
>>
>>class Class1
>>{
>> static void Main()
>> {
>> ManagementObjectSearcher searcher = new ManagementObjectSearcher(
>> @"\\.\ROOT\SecurityCenter", "Select * from AntiVirusProduct");
>> foreach (ManagementObject o in searcher.Get())
>> {
>> Console.WriteLine("製造元:{0}", o["CompanyName"]);
>> Console.WriteLine("アンチウイルスソフト名:{0}", o["DisplayName"]);
>> Console.WriteLine("バージョン:{0}", o["versionNumber"]);
>> }
>> Console.ReadKey();
>> }
>>}
>
> コードありがとうございます。
> ManagementObjectSearcher を使うのですか。
> うまくいきました。
>
> 応用で
> new ManagementClass(@"\\.\ROOT\SecurityCenter","AntiVirusProduct")
> としたらうまくいくかと思ったのですが、だめでした。
> root/cimv2 でしか使えないという事なんでしょうか?
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -