2010-12-12 60 views
1

私のローカルマシンのセキュリティログイベントからデータを取得する際に、以下のコードを使用する際に問題があります。私はさまざまなコンピュータでテストしました。ローカルマシンはWindows XP sp3です。クエリにはエラーはありませんが、0レコードが返されます。リモートマシンの場合、それは完全に動作します 誰も私に解決策を与えることができますか? これはコードです:Win32_NTLogEventのクエリWHERE Logfile = 'Security'はリモートマシンでのみ動作します

using System; 
using System.Management; 
using System.Windows.Forms; 

namespace WMISample 
{ 
    public class MyWMIQuery 
    { 
     public static void Main() 
     { 
      try 
      { 
       string[] arrComputers = {".","clientN"}; 
       foreach (string strComputer in arrComputers) 
       { 
        Console.WriteLine("=========================================="); 
        Console.WriteLine("Computer: " + strComputer); 
        Console.WriteLine("=========================================="); 

        ManagementObjectSearcher searcher = 
         new ManagementObjectSearcher(
         "\\\\" + strComputer + "\\root\\CIMV2", 
         "SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security'"); 

        foreach (ManagementObject queryObj in searcher.Get()) 
        { 
         Console.WriteLine("-----------------------------------"); 
         Console.WriteLine("Win32_NTLogEvent instance"); 
         Console.WriteLine("-----------------------------------"); 
         Console.WriteLine("RecordNumber: {0}", queryObj["RecordNumber"]); 
         Console.WriteLine("SourceName: {0}", queryObj["SourceName"]); 
         Console.WriteLine("TimeGenerated: {0}", queryObj["TimeGenerated"]); 
        } 
       } 
      } 
      catch(ManagementException err) 
      { 
       MessageBox.Show("An error occurred while querying for WMI data: " + err.Message); 
      } 
     } 
    } 
} 

私はそれが動作VBSでWMIクエリのための偽装レベルを使用していることを理解していました。

Set objWMI = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate,(Security)}!\\" _ 
& strComputer & "\root\cimv2") 
Set colLoggedEvents = objWMI.ExecQuery _ 
("Select * from Win32_NTLogEvent Where Logfile = 'Security'") 

だから私はC#で翻訳する必要があります。

答えて

1

私はコードを使ってこの質問を閉じます。 コードは次のとおりです。

 using System; 
     using System.Management; 
     namespace WMISample 
     { 
      public class MyWMIQuery 
      { 
       public static void Main() 
       { 
        try 
        { 
         ConnectionOptions oConn = new ConnectionOptions(); 
         oConn.Impersonation = ImpersonationLevel.Impersonate; 
         oConn.EnablePrivileges = true; 

         string[] arrComputers = {".","clientN"}; 
         foreach (string strComputer in arrComputers) 
         { 
          Console.WriteLine("=========================================="); 
          Console.WriteLine("Computer: " + strComputer); 
          Console.WriteLine("=========================================="); 
          ManagementObjectSearcher searcher = new ManagementObjectSearcher 
          (
           new ManagementScope("\\\\" + strComputer + "\\root\\CIMV2", oConn), 
           new ObjectQuery(@"SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security'") 
          ); 


          foreach (ManagementObject queryObj in searcher.Get()) 
          { 
           Console.WriteLine("-----------------------------------"); 
           Console.WriteLine("Win32_NTLogEvent instance"); 
           Console.WriteLine("-----------------------------------"); 
           Console.WriteLine("RecordNumber: {0}", queryObj["RecordNumber"]); 
           Console.WriteLine("SourceName: {0}", queryObj["SourceName"]); 
           Console.WriteLine("TimeGenerated: {0}", queryObj["TimeGenerated"]); 
          } 
         } 
        } 
        catch(ManagementException err) 
        { 
         MessageBox.Show("An error occurred while querying for WMI data: " + err.Message); 
        } 
       } 
      } 
     } 

0

"。"の代わりにローカルコンピュータ名を使用してみます。そう、代わりに

string[] arrComputers = {".","clientN"}; 

のあなたは}

string[] arrComputers = { Environment.GetEnvironmentVariable("computername"), "clientN"を持っているでしょう。

+0

が、残念ながらこれは、コンピュータ名を書くと同じで、仕事をdoesen't。 – AlessandroG

+0

なぜ否定的な投票ですか? – AlessandroG

+0

私も否定的な投票について疑問に思っていたので、私はそれを正当なものにしました....まともな質問です。私はローカルマシン上でクエリWMIをなぜ傾けるのか把握しようとしています。運があれば私の答えを更新します:-) – weloytty

関連する問題