2009-10-08 29 views
8

Tôi đã có một lớp mà kéo thông tin mô hình (thông tin phần cứng) cho một mã máy tính cục bộ là như vậy:Nhận thẻ dịch vụ từ Máy Dell sử dụng .net?

Imports System.Management 

Public Class clsWMI 
    Private objOS As ManagementObjectSearcher 
    Private objCS As ManagementObjectSearcher 
    Private objMgmt As ManagementObject 
    Private m_strComputerName As String 
    Private m_strManufacturer As String 
    Private m_StrModel As String 
    Private m_strOSName As String 
    Private m_strOSVersion As String 
    Private m_strSystemType As String 
    Private m_strTPM As String 
    Private m_strWindowsDir As String 


    Public Sub New() 

     objOS = New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem") 
     objCS = New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem") 
     For Each objMgmt In objOS.Get 


      m_strOSName = objMgmt("name").ToString() 
      m_strOSVersion = objMgmt("version").ToString() 
      m_strComputerName = objMgmt("csname").ToString() 
      m_strWindowsDir = objMgmt("windowsdirectory").ToString() 
     Next 

     For Each objMgmt In objCS.Get 
      m_strManufacturer = objMgmt("manufacturer").ToString() 
      m_StrModel = objMgmt("model").ToString() 
      m_strSystemType = objMgmt("systemtype").ToString 
      m_strTPM = objMgmt("totalphysicalmemory").ToString() 
     Next 
    End Sub 

    Public ReadOnly Property ComputerName() 
     Get 
      ComputerName = m_strComputerName 
     End Get 

    End Property 
    Public ReadOnly Property Manufacturer() 
     Get 
      Manufacturer = m_strManufacturer 
     End Get 

    End Property 
    Public ReadOnly Property Model() 
     Get 
      Model = m_StrModel 
     End Get 

    End Property 
    Public ReadOnly Property OsName() 
     Get 
      OsName = m_strOSName 
     End Get 

    End Property 

    Public ReadOnly Property OSVersion() 
     Get 
      OSVersion = m_strOSVersion 
     End Get 

    End Property 
    Public ReadOnly Property SystemType() 
     Get 
      SystemType = m_strSystemType 
     End Get 

    End Property 
    Public ReadOnly Property TotalPhysicalMemory() 
     Get 
      TotalPhysicalMemory = m_strTPM 
     End Get 

    End Property 

    Public ReadOnly Property WindowsDirectory() 
     Get 
      WindowsDirectory = m_strWindowsDir 
     End Get 

    End Property 

End Class 

Bất kỳ khả năng để có được một thẻ dịch vụ từ WMI? Từ hình thức bên client tôi hiển thị giá trị như sau:

Dim objWMI As New clsWMI() 
     With objWMI 
      Debug.WriteLine("Computer Name = " & .ComputerName) 
      Me.Label1.Text = "Name: " & .ComputerName 
      Debug.WriteLine("Computer Manufacturer = " & .Manufacturer) 
      Me.Label2.Text = "Manufacturer: " & .Manufacturer 
      Debug.WriteLine("Computer Model = " & .Model) 
      Me.Label3.Text = "Model: " & .Model 
      Debug.WriteLine("OS Name = " & .OsName) 
      Me.Label4.Text = "OS Name: " & .OsName 
      Debug.WriteLine("OS Version = " & .OSVersion) 
      Me.Label5.Text = "OS VERSION: " & .OSVersion 

      Debug.WriteLine("System Type = " & .SystemType) 
      Me.Label6.Text = "System type = " & .SystemType 

      Debug.WriteLine("Total Physical Memory = " & .TotalPhysicalMemory) 
      Me.Label7.Text = "Memory: " & .TotalPhysicalMemory 
      Debug.WriteLine("Windows Directory = " & .WindowsDirectory) 
      Me.Label8.Text = "Win Directory: " & .WindowsDirectory 
     End With 

Trả lời

2

Tôi nghĩ rằng bạn cần phải nhận được số serial từ BIOS như thế này:

Select SerialNumber From Win32_BIOS 

On của Dell Tôi tin rằng điều này tương ứng với thẻ dịch vụ

+0

Hi Jason tôi đã làm một cái gì đó như thế này: OBJS = New ManagementObjectSearcher ("SELECT * FROM Win32_SystemEnclosure") Sau đó, tôi đã có thể kéo số serial như vậy: Đối Mỗi objMgmt Trong objS.Get m_strSerial = objMgmt ("serialnumber"). ToString() Tiếp theo Tôi đoán câu hỏi của tôi là khác nhau giữa WIN32_BIOS và Win32_SystemEnclosure là gì? Tôi thậm chí chạy nó trên một máy xây dựng lại và nó hoạt động ... – JonH

+0

Từ những gì tôi có thể nói, Win32_SsytemEnclosure được dựa trên hộp vật lý mà máy tính được xây dựng trong, trong khi Win32_BIOS là chip trên bo mạch chủ. Lý thuyết của tôi là nếu bạn di chuyển một bo mạch chủ từ trường hợp ban đầu của nó sang trường hợp khác, thì các thẻ dịch vụ bạn nhận được từ BIOS và SystemEnclosure có thể khác nhau, nhưng tôi chưa thử nghiệm điều này. Nó có thể an toàn để giả định rằng số serial từ một trong hai lớp sẽ là chính xác. –

+0

Cảm ơn người đàn ông làm việc một điều trị và có ý nghĩa. Tuyệt vời :) – JonH

1

Dưới đây là một số mã # C nên nó

đây im nhận được từ Win32_ComputerSystem nhưng nếu bạn mong muốn bạn easly có thể chuyển đổi nó để chạy againt Win32_Bios

void GetComputerSystem() 
{ 
     // http://msdn.microsoft.com/en-us/library/aa394102(VS.85).aspx 
     ManagementObjectCollection oReturnCollection; 
     try 
     { 
      ObjectQuery query = new ObjectQuery("Select UserName,Name,Manufacturer,Model from Win32_ComputerSystem"); 
      ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(gManager, query); 
      oReturnCollection = oSearcher.Get(); 
      oSearcher.Dispose(); 
     } 
     catch 
     { 
      gHasError = true; 
      return; 
     } 

     //loop through found drives and write out info 
     foreach (ManagementObject oReturn in oReturnCollection) 
     { 
     // Disk name 
      object oLoggedInUser = oReturn["UserName"]; 
      if (oLoggedInUser == null) 
       gOSInfo.UserName = "None"; 
      else 
       gOSInfo.UserName = (string)oLoggedInUser; 

      string Manufacturer = (string)oReturn["Manufacturer"]; 
      string Model = (string)oReturn["Model"]; 
     } 
    } 
} 
+0

Ông đã làm điều đó. Không có giá trị nào bạn đang truy vấn liên quan đến thẻ dịch vụ của máy. –

+0

Jason Tôi đã đăng bài này ở trên: Hi Jason Tôi đã làm một cái gì đó như thế này: objS = Mới ManagementObjectSearcher ("SELECT * FROM Win32_SystemEnclosure") Sau đó, tôi đã có thể kéo số serial như vậy: Đối với mỗi objMgmt Trong objS.Get m_strSerial = objMgmt ("serialnumber"). ToString() Tiếp theo tôi đoán câu hỏi của tôi là khác nhau giữa WIN32_BIOS và Win32_SystemEnclosure là gì? Tôi thậm chí chạy nó trên một máy xây dựng lại và nó hoạt động ... – JonH

0
namespace Con2 
{ 
    using System; 
    using System.Management; 
    using System.IO; 

    class Program 
    { 
     public static string computerName = "localhost"; 

     // a central place to store the info, 
     public static string inventFile = @"\\Wdstorage\public\install\Inventfile.txt"; 

     static void Main(string[] args) 
     { 
      try 
      { 
       FileStream fileStream = new FileStream(inventFile, FileMode.Append); 

       if (File.Exists(inventFile)) 
       { 
        using (StreamWriter sw = new StreamWriter(fileStream)) 
        { 
         sw.Write("Added: " + DateTime.Now.ToString()); 

         ManagementScope scope = new ManagementScope(@"\\" + computerName + @"\root\cimv2"); 
         scope.Connect(); 

         ObjectQuery query = new ObjectQuery("Select * From Win32_SystemEnclosure"); 
         ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); 
         ManagementObjectCollection objColl = searcher.Get(); 

         foreach (ManagementObject o in objColl) 
         { 
          Console.WriteLine("ServiceTag=" + o["SerialNumber"].ToString()); 
          sw.Write(", ServiceTag=" + o["SerialNumber"].ToString()); 
         } 

         query = new ObjectQuery("Select * from Win32_ComputerSystem"); 
         searcher = new ManagementObjectSearcher(scope, query); 

         objColl = searcher.Get(); 

         foreach (ManagementObject oReturn in objColl) 
         { 
          string Manufacturer = (string)oReturn["Manufacturer"]; 
          sw.Write(", Manufacturer=" + (string)oReturn["Manufacturer"]); 

          string Model = (string)oReturn["Model"]; 
          sw.Write(", Model=" + (string)oReturn["Model"]); 

          string name = (string)oReturn["Name"]; 
          sw.Write(", name=" + (string)oReturn["name"]); 

          string userName = (string)oReturn["UserName"]; 
          sw.Write(", userName=" + (string)oReturn["userName"]); 

          Console.WriteLine((string)oReturn["Manufacturer"]); 
          Console.WriteLine((string)oReturn["Model"]); 
          Console.WriteLine((string)oReturn["Name"]); 
          Console.WriteLine((string)oReturn["UserName"]); 

         } 
         sw.WriteLine(); 
         sw.Close(); 
        } 
       } 
       // else 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Error :" + ex.Message); 
       Console.WriteLine("Prova att köra programmet en gång till.."); 
      } 

      Console.WriteLine(""); 
      Console.Write("<Enter> to quit :"); 
      Console.ReadLine(); 
     } 
    } 
} 
Các vấn đề liên quan