使用.net从Dell Machine获取服务标签?

时间:2009-10-08 13:47:50

标签: c# vb.net wmi

我有一个提取模型信息的类(硬件信息) 对于本地机器代码是这样的:

   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获取服务标签?从客户端表单我显示如下值:

   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 个答案:

答案 0 :(得分:2)

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

Select SerialNumber From Win32_BIOS

在戴尔,我相信这对应于服务标签

答案 1 :(得分:1)

这是一些应该得到它的C#代码

我来自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"];
        }
    }
}

答案 2 :(得分:1)

我写了一个程序,可以恢复戴尔服务标签,快速代码以及驱动程序和保修信息的链接。您可以在

找到C#代码

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

我希望这有助于其他人。

答案 3 :(得分: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();
        }
    }
}