代码之家  ›  专栏  ›  技术社区  ›  JonH

使用.net从Dell计算机获取服务标签?

  •  8
  • JonH  · 技术社区  · 15 年前

    对于本地机器,代码如下所示:

       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
    

    是否有可能从WMI获取服务标签?从客户端表单I显示如下值:

       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
    
    4 回复  |  直到 10 年前
        1
  •  2
  •   Jason Miesionczek    15 年前

    我认为您需要从BIOS中获取序列号,如下所示:

    Select SerialNumber From Win32_BIOS
    

    在戴尔的产品上,我认为这与服务标签相对应

        2
  •  1
  •   EKS    15 年前

    这是我从 Win32_ComputerSystem 但如果你愿意,你可以很容易地将其转换为再次运行 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"];
            }
        }
    }
    
        3
  •  1
  •   Sam Plus Plus    13 年前

    我编写了一个程序,用于恢复Dell服务标签、Express代码以及指向驱动程序和保修信息的链接。你可以在网站上找到C代码

    http://samuelhaddad.com/software-projects/dellservicetagfinder/

    我希望这能帮助别人。

        4
  •  0
  •   Cody Gray BugGuyBCS    13 年前
    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();
            }
        }
    }