最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用C#實現(xiàn)獲取當(dāng)前設(shè)備硬件信息

 更新時間:2023年03月23日 10:57:01   作者:Hansel.Wn  
這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)獲取當(dāng)前設(shè)備硬件信息的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下

需求描述

現(xiàn)在有這樣一個需求:

我有A、B兩臺服務(wù)器,其中A是一個視頻處理服務(wù)器,B是一個數(shù)據(jù)存儲服務(wù)器。此時有一個視頻需要先在A服務(wù)器上進(jìn)行一系列處理后,再上傳到B服務(wù)器上進(jìn)行存儲。

為了減少人工手動處理的工作量,A服務(wù)器需要主動向B發(fā)送數(shù)據(jù),然后B服務(wù)器接收數(shù)據(jù)后進(jìn)行存儲,但是在這個過程中我不希望B服務(wù)器接收A服務(wù)器之外的其他端上傳的數(shù)據(jù),所以B在接收數(shù)據(jù)的時候就需要對數(shù)據(jù)的來源進(jìn)行一個驗證。

這里A服務(wù)器在上傳數(shù)據(jù)時攜帶自身服務(wù)器的硬件信息,通過驗證硬件信息的方法,能夠確定數(shù)據(jù)來源是否是A服務(wù)器。

確定當(dāng)前程序運(yùn)行在那種平臺上

IsOSPlatform 方法用于指示當(dāng)前應(yīng)用程序是否正在指定平臺上運(yùn)行:

public static bool IsOSPlatform (System.Runtime.InteropServices.OSPlatform osPlatform);

參數(shù)osPlatform表示一種操作系統(tǒng)平臺:

valueDescription
FreeBSD獲取表示 FreeBSD 操作系統(tǒng)的對象
Linux獲取表示 Linux 操作系統(tǒng)的對象
OSX獲取表示 OSX 操作系統(tǒng)的對象
Windows獲取表示 Windows 操作系統(tǒng)的對象

ManagementObjectSearcher類獲取硬件信息

ManagementObjectSearcher是一個構(gòu)造函數(shù),在使用之前需要引入命名空間using System Management,這個構(gòu)造函數(shù)接收一個字符串作為參數(shù),這個字符串一般寫作"select * from" + key,這里key的值有多種:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + Key);
 // 常用Key值
// 硬件 
Win32_Processor, // CPU 處理器 
Win32_PhysicalMemory, // 物理內(nèi)存條 
Win32_Keyboard, // 鍵盤 
Win32_PointingDevice, // 點(diǎn)輸入設(shè)備,包括鼠標(biāo)。 
Win32_FloppyDrive, // 軟盤驅(qū)動器 
Win32_DiskDrive, // 硬盤驅(qū)動器 
Win32_CDROMDrive, // 光盤驅(qū)動器 
Win32_BaseBoard, // 主板 
Win32_BIOS, // BIOS 芯片 
Win32_ParallelPort, // 并口 
Win32_SerialPort, // 串口 
Win32_SerialPortConfiguration, // 串口配置 
Win32_SoundDevice, // 多媒體設(shè)置,一般指聲卡。 
Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP) 
Win32_USBController, // USB 控制器 
Win32_NetworkAdapter, // 網(wǎng)絡(luò)適配器 
Win32_NetworkAdapterConfiguration, // 網(wǎng)絡(luò)適配器設(shè)置 
Win32_Printer, // 打印機(jī) 
Win32_PrinterConfiguration, // 打印機(jī)設(shè)置 
Win32_PrintJob, // 打印機(jī)任務(wù) 
Win32_TCPIPPrinterPort, // 打印機(jī)端口 
Win32_POTSModem, // MODEM 
Win32_POTSModemToSerialPort, // MODEM 端口 
Win32_DesktopMonitor, // 顯示器 
Win32_DisplayConfiguration, // 顯卡 
Win32_DisplayControllerConfiguration, // 顯卡設(shè)置 
Win32_VideoController, // 顯卡細(xì)節(jié)。 
Win32_VideoSettings, // 顯卡支持的顯示模式。 

// 操作系統(tǒng) 
Win32_TimeZone, // 時區(qū) 
Win32_SystemDriver, // 驅(qū)動程序 
Win32_DiskPartition, // 磁盤分區(qū) 
Win32_LogicalDisk, // 邏輯磁盤 
Win32_LogicalDiskToPartition, // 邏輯磁盤所在分區(qū)及始末位置。 
Win32_LogicalMemoryConfiguration, // 邏輯內(nèi)存配置 
Win32_PageFile, // 系統(tǒng)頁文件信息 
Win32_PageFileSetting, // 頁文件設(shè)置 
Win32_BootConfiguration, // 系統(tǒng)啟動配置 
Win32_ComputerSystem, // 計算機(jī)信息簡要 
Win32_OperatingSystem, // 操作系統(tǒng)信息 
Win32_StartupCommand, // 系統(tǒng)自動啟動程序 
Win32_Service, // 系統(tǒng)安裝的服務(wù) 
Win32_Group, // 系統(tǒng)管理組 
Win32_GroupUser, // 系統(tǒng)組帳號 
Win32_UserAccount, // 用戶帳號 
Win32_Process, // 系統(tǒng)進(jìn)程 
Win32_Thread, // 系統(tǒng)線程 
Win32_Share, // 共享 
Win32_NetworkClient, // 已安裝的網(wǎng)絡(luò)客戶端 
Win32_NetworkProtocol, // 已安裝的網(wǎng)絡(luò)協(xié)議 

示例代碼

獲取CPU序列號

private string GetServerCode()
        {
            string code = "";
            if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows))
            {
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor");

                foreach (ManagementObject mo in searcher.Get())
                {
                    code = mo["ProcessorId"].ToString().Trim();
                    break;
                }
            }
            else
            {
                code = ExecuteCommand("dmidecode -t Processor | grep ID | sort -u | awk -F':' '{print $2}'");
            }

            Console.WriteLine("serverCode:" + code);

            return (code ?? "").Replace(" ", "").Trim();
        }

在上面獲取CPU序列號的示例代碼中,首先創(chuàng)建了一個ManagementObjectSearcher對象,然后通過Get()方法獲得ManagementObjectCollection集合,然后使用foreach方法遍歷這個集合拿到ManagementObject數(shù)據(jù),通過managementObject[name]或ManagementObject.GetPropertyValue(name)獲得想要的屬性。

不過在這之前我并不知道這個name的值具體填什么,這個時候只需要通過console打印一下就好了。

到此這篇關(guān)于利用C#實現(xiàn)獲取當(dāng)前設(shè)備硬件信息的文章就介紹到這了,更多相關(guān)C#獲取設(shè)備硬件信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#使用this關(guān)鍵字實現(xiàn)串聯(lián)構(gòu)造函數(shù)調(diào)用方法

    C#使用this關(guān)鍵字實現(xiàn)串聯(lián)構(gòu)造函數(shù)調(diào)用方法

    這篇文章主要介紹了C#使用this關(guān)鍵字實現(xiàn)串聯(lián)構(gòu)造函數(shù)調(diào)用方法,實例分析了使用this關(guān)鍵字串聯(lián)構(gòu)造函數(shù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 基于WebClient實現(xiàn)Http協(xié)議的Post與Get對網(wǎng)站進(jìn)行模擬登陸和瀏覽實例

    基于WebClient實現(xiàn)Http協(xié)議的Post與Get對網(wǎng)站進(jìn)行模擬登陸和瀏覽實例

    這篇文章主要介紹了基于WebClient實現(xiàn)Http協(xié)議的Post與Get對網(wǎng)站進(jìn)行模擬登陸和瀏覽的方法,以實例形式詳細(xì)分析了WebClient模擬POST與GET登陸與瀏覽的過程,對于C#項目開發(fā)來說具有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • C#中DataTable實現(xiàn)篩選查詢的示例

    C#中DataTable實現(xiàn)篩選查詢的示例

    本文主要介紹了C#中DataTable實現(xiàn)篩選查詢的示例,主要是DataTable進(jìn)行過濾篩選,常用的一些方法為:Select,dataview,具有一定的參考價值,感興趣的可以了解一下
    2023-04-04
  • 關(guān)于C#生成MongoDB中ObjectId的實現(xiàn)方法

    關(guān)于C#生成MongoDB中ObjectId的實現(xiàn)方法

    本篇文章小編為大家介紹,關(guān)于C#生成MongoDB中ObjectId的實現(xiàn)方法。需要的朋友參考下
    2013-04-04
  • 使用C#開發(fā)Socket通訊的方法

    使用C#開發(fā)Socket通訊的方法

    使用C#開發(fā)Socket通訊的方法...
    2007-04-04
  • C# 利用StringBuilder提升字符串拼接性能的小例子

    C# 利用StringBuilder提升字符串拼接性能的小例子

    一個項目中有數(shù)據(jù)圖表呈現(xiàn),數(shù)據(jù)量稍大時顯得很慢,在使用了StringBuilder后效果提升很明顯,下面有例子
    2013-07-07
  • 最新評論

    金溪县| 金寨县| 巴塘县| 乌拉特前旗| 义马市| 琼结县| 阿鲁科尔沁旗| 吴旗县| 定边县| 井研县| 江油市| 翁源县| 长丰县| 白河县| 福建省| 德令哈市| 喀什市| 屯门区| 泰安市| 合阳县| 茶陵县| 旬邑县| 花莲市| 齐齐哈尔市| 璧山县| 噶尔县| 霸州市| 赞皇县| 瑞昌市| 柳州市| 来凤县| 濮阳县| 滕州市| 科尔| 南涧| 龙井市| 启东市| 灵寿县| 东兴市| 汪清县| 黄冈市|