Получение Метки от использования Машины Dell .NET?

Ответ зависит от языка. Я недавно встретил парня, компания которого разрабатывает стек USB, который работает на многих популярных сотовых телефонах (например, таким образом, Ваш телефон может говорить с Вашим компьютером). У них есть правило в их магазине, что все процедуры C должны быть повторно используемы. На практике то, что это означает, - то, что вместо глобальных переменных, они используют дополнительный параметр для каждой стандартной программы; параметр указывает на состояние, которое должно сохраниться между стандартными программами.

я использую эту технику все время для абстракций с состоянием. Пример: абстракция читателя для фотографических изображений: читатель обеспечивает доступ к одному пикселю за один раз; это должно знать открытый дескриптор файла, какова текущая позиция в изображении, таким образом, на и т.д. Вся эта информация входит в частную структуру C или членов парламента, не занимающих официального поста класса C++. Никакие глобальные переменные. Внешний мир видит:

typedef struct Pnmrdr_T *Pnmrdr_T;

struct Pnmrdr_T *Pnmrdr_new(FILE *);
pixel Pnmrdr_get(Pnmrdr_T);
void Pnmrdr_close(Pnmrdr_T);
void Pnmrdr_free(Pnmrdr_T *rp); // frees memory and sets *rp = NULL

Этот стиль программирования очень похож на методы OO.

, Почему лучше, чем глобальные переменные? нет никаких неожиданностей . Если что-то идет не так, как надо, или Вы хотите добавить опцию, Вы знаете, что все явно в значениях, переданных в. Кроме того, Вы знаете, что можно включить много модулей вместе, и они не вмешаются, если Вы явно не передадите состояние между ними. Мой контакт в бизнесе сотового телефона говорит, что это свойство было огромно для его компании---, они - комплект оборудования программного обеспечения OEM, и они могут легко включить различные части вместе для различных клиентов.

мне действительно нравится программировать этот путь, потому что я добираюсь для наблюдения всего, на что это идет, и мои частные структуры данных защищены от любопытных глаз:-)

8
задан JonH 17 March 2014 в 19:06
поделиться

3 ответа

Я думаю, вам нужно получить серийный номер из BIOS следующим образом:

Select SerialNumber From Win32_BIOS

На Dell я считаю, что это соответствует метке обслуживания

2
ответ дан 6 December 2019 в 00:07
поделиться

Вот код 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"];
        }
    }
}
1
ответ дан 6 December 2019 в 00:07
поделиться
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();
        }
    }
}
0
ответ дан 6 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: