2009-10-08 8 views
8

Mam klasy, która ciągnie model informacji (info Hardware) dla lokalnego kodu maszynowego jest tak:Pobieranie znacznika serwisowego z komputera Dell za pomocą .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 

żadnej możliwości, aby uzyskać znacznik serwisowy z WMI? Z formularza po stronie klienta wyświetlać wartości tak:

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 

Odpowiedz

2

myślę, że trzeba, aby uzyskać numer seryjny z BIOS tak:

Select SerialNumber From Win32_BIOS 

On Dell wierzę odpowiada znacznika serwisowego

+0

Hi Jason zrobiłem coś takiego: OBJS = Nowa ManagementObjectSearcher ("SELECT * FROM Win32_SystemEnclosure") Potem udało mi się wyciągnąć numer seryjny tak: For Each objMgmt W objS.Get m_strSerial = objMgmt ("numer seryjny") ToString() Następny Domyślam się, że moje pytanie jest różne między WIN32_BIOS i Win32_SystemEnclosure? Nawet uruchomiłem go na zrekonstruowanej maszynie i działa ... – JonH

+0

Z tego co wiem, Win32_SsytemEnclosure opiera się na fizycznym pudełku, w którym komputer jest wbudowany, podczas gdy Win32_BIOS jest chipem na płycie głównej. Moja teoria jest taka, że ​​jeśli przeniesiesz płytę główną z oryginalnego przypadku do innej sprawy, to tagi usług otrzymane z BIOS i SystemEnclosure mogą być inne, ale tego nie przetestowałem. Prawdopodobnie można bezpiecznie założyć, że numer seryjny z obu klas byłby dokładny. –

+0

Dzięki człowiek działa uczta i ma sens. Awesome :) – JonH

1

Oto kod C#, który powinien dostać to

Tu im się z Win32_ComputerSystem ale jeśli chcecie można przekształcić go w łatwy do uruchomienia 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

On już to robi. Żadna z wartości, o które pytasz, nie odnosi się do znacznika serwisowego komputera. –

+0

Jason Wysłałem to wyżej: Cześć Jason Zrobiłem coś takiego: objS = Nowy ManagementObjectSearcher ("SELECT * FROM Win32_SystemEnclosure") Wtedy byłem w stanie wyciągnąć numer seryjny w następujący sposób: Dla każdego objMgmt In objS.Get m_strSerial = objMgmt ("numer seryjny") ToString() Dalej Myślę, że moje pytanie brzmi: czym różni się WIN32_BIOS od Win32_SystemEnclosure? Nawet uruchomiłem go na zrekonstruowanej maszynie i działa ... – 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(); 
     } 
    } 
} 
Powiązane problemy