国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

通過C#語言判斷本地計算機物理網(wǎng)絡接口的研究

2021-12-24 07:13胡迪
電腦知識與技術 2021年29期
關鍵詞:注冊表

胡迪

摘要:為避免桌面終端運維工程師在工作中則經(jīng)常面臨各類重復性的操作,擬通過“多用途運維軟件包的研制”項目是將企業(yè)中運維運維工程師常用的操作進行集成,并以.NET平臺為底層,利用C#語言將注冊表操作、PowerShell命令執(zhí)行等進行整合的一套自研軟件包。該項目通過WPF框架在統(tǒng)一的前端界面中完成可視化的顯示,簡化工程師操作,提高工作效率,減少誤操作率,保證操作過程的標準化并滿足企業(yè)信息化安全標準。

關鍵詞:.NET Core;C#;注冊表

中圖分類號:TP3? 文獻標識碼:A

文章編號:1009-3044(2021)29-0128-02

1背景

我公司一直承擔著集團內(nèi)京直地區(qū)各下屬公司的桌面計算機終端運維工作,涉及設備數(shù)量超過4000千臺。終端運維工程師在工作中則經(jīng)常面臨各類重復性的操作,如:打開傳統(tǒng)控制面板、修改計算機名稱、計算機加域及退域、打印機添加及管理、辦公軟件及操作系統(tǒng)激活、驅(qū)動程序安裝及檢查、應用軟件安裝及刪除、瀏覽器配置等。工程師需要不斷切換工作場景,分別打開各功能所對應模塊手動進行設置,不僅影響工作效率,還增加了誤操作率,特別是對新員工培訓上崗容易造成混亂,也影響新入職員工的上崗速度。

為避免上述情況,擬通過“多用途運維軟件包”的研制,將桌面終端運維工程師常用的操作進行集成。在統(tǒng)一界面中完成可視化的前端顯示,簡化工程師操作,提高工作效率,減少誤操作率,保證操作過程的標準化。同時滿足企業(yè)內(nèi)的信息化安全規(guī)定及標準。

本軟件包共有激活、系統(tǒng)配置、設備管理、軟件管理四個分類,包含激活操作系統(tǒng)、激活辦公套件、顯示操作系統(tǒng)授權信息、顯示辦公套件版本及授權信息、修改計算機名、加入退出 AD域、操作系統(tǒng)代理配置、打開控制面板、關閉系統(tǒng)休眠、打開 PowerShell控制臺、打開設備管理器、打印機管理、添加打印機、顯示網(wǎng)卡信息、磁盤管理、連接服務器、添加或刪除程序、打開 Internet選項等功能。

考慮到該項目成果主要應用于微軟Windows操作系統(tǒng)平臺上,且后期可能出現(xiàn)的跨平臺需求,實施過程以.NET Core為底層平臺,前端界面使用WPF框架展示,實現(xiàn)主流現(xiàn)代化的展示界面,后臺代碼則通過C#程序設計語言進行開發(fā)。其中.Net Core、WPF、C#產(chǎn)品均已開放源代碼,且可實現(xiàn)跨平臺的支持能力,為未來可能出現(xiàn)的平臺遷移及跨多平臺情況設計好底層框架。

2現(xiàn)狀

鑒于企業(yè)信息化管理規(guī)定中關于“所有計算機必須綁定網(wǎng)卡的物理地址方可準入公司內(nèi)部局域網(wǎng)絡”的要求,在多用途運維軟件包中設計了輸出本地計算機網(wǎng)絡接口數(shù)據(jù)的模塊,對本機物理網(wǎng)絡接口在前端界面中完成輸出顯示,以方便終端運維工程師快速獲取本機網(wǎng)卡的物理地址。但是在微軟公司 Windows操作系統(tǒng)中還存有大量的虛擬網(wǎng)卡,此類網(wǎng)卡無論在用戶的日常應用中抑或是工程師的運維操作中均不存在任何意義,甚至對工程師在故障排查操作過程中的判斷產(chǎn)生了迷惑及不利因素。

本文通過調(diào)用類與方法,結合對注冊表的判斷,以實現(xiàn)在前端界面中過濾本地計算機虛擬網(wǎng)絡接口,僅輸出顯示物理網(wǎng)絡接口數(shù)據(jù)的功能,并滿足項目實施需求。

在微軟公司關于.NET平臺的文檔中,闡述了其提供的一種對網(wǎng)絡流量數(shù)據(jù)、網(wǎng)絡地址信息和本地計算機地址變更通知訪問權限的命名空間,在該命名空間中包含了提供網(wǎng)絡接口配置和統(tǒng)計接口信息的類。該類可用于封裝本地計算機上網(wǎng)絡接口的數(shù)據(jù)。

在本項目實施中,首先創(chuàng)建了用于獲取本地計算機上全部網(wǎng)絡接口數(shù)據(jù)的私有方法,在該方法中將本地計算機全部網(wǎng)絡接口的數(shù)據(jù)存入名為category 的NetworkInterface類型數(shù)組變量中。而后對該數(shù)組變量進行遍歷循環(huán),將網(wǎng)絡名稱、網(wǎng)卡物理地址的值以字符串型式輸出顯示至名為lstAdapter的前端界面列表框組件中。然后通過方法將網(wǎng)絡接口的IPv4地址信息保存至UnicastIPAddressInformationCollection類型的ipCollection變量中,最后對該變量其進行遍歷、判斷及輸出。

通過對該私有方法的代碼進行編譯及執(zhí)行,可以看到如圖1所示前端界面中正常輸出并顯示了本地計算機上的網(wǎng)絡接口數(shù)據(jù)。

對輸出結果進行分析,發(fā)現(xiàn)其中包含了本地計算機所有的網(wǎng)絡接口數(shù)據(jù),既有物理網(wǎng)絡接口,又有虛擬網(wǎng)絡接口。而虛擬網(wǎng)絡接口在本項目中被設定為無效信息,無需進行輸出顯示。所以還需要在代碼中對此類接口的數(shù)據(jù)進行判斷,進而過濾并跳過在前端界面中的輸出顯示操作,從而達到前端界面僅輸出顯示物理網(wǎng)絡接口數(shù)據(jù)的需求。

3思路

針對現(xiàn)狀,實施方案擬將在代碼中增加判斷節(jié)點作為切入點,通過對網(wǎng)絡接口的名稱或網(wǎng)絡接口的類型增加判斷,進而實現(xiàn)對網(wǎng)絡接口為物理接口或虛擬接口的劃分。

通過對微軟公司關于驅(qū)動程序的文檔進行分析,發(fā)現(xiàn)該公司在操作系統(tǒng)接口中為設備安裝程序類提供了固定的系統(tǒng)定義唯一標識(GUID)??紤]到微軟公司操作系統(tǒng)底層的注冊表中包含了所有硬件設備的全部信息,又在注冊表中對該唯一標識進行了分析,發(fā)現(xiàn)該鍵中包含數(shù)個以其他唯一標識(GUID)命名的子鍵,再將各子鍵中的Name值項與設備管理器中網(wǎng)絡適配器內(nèi)的所有網(wǎng)絡接口名稱進行比對,確定了該值項即對應了其網(wǎng)絡接口的名稱。證實了上述關于注冊表中包含了本地計算機所有硬件設備的全部信息的思路。

而在分析子鍵中的PnPInstanceId值項后發(fā)現(xiàn)其為操作系統(tǒng)中對該設備設置的唯一標識。將所有Name子鍵中的PnPIn?stanceId值項中的數(shù)據(jù)進行比對可以發(fā)現(xiàn)均以 PCI、SWD 或 GUID 為起始,再結合對 Name值項的分析,可以發(fā)現(xiàn)以PCI 為前三個字符的PnPInstanceId值項,其對應的Name值項均為本地計算機中的物理網(wǎng)絡接口,其余則對應藍牙、Miniport等虛擬網(wǎng)絡接口。進一步證實了可以通過對注冊表的判斷來區(qū)分本地計算機所有網(wǎng)絡接口數(shù)據(jù)類型的思路。

根據(jù)以上思路,最終確定采用在私有方法中添加對注冊表內(nèi)PnPInstanceId值項的輪詢遍歷,并在該過程中將值項數(shù)據(jù)的前三個字符與“PCI”進行比對,用于判斷物理或虛擬網(wǎng)絡接口的方案。對結果與”PCI”一致的執(zhí)行在前端界面的輸出顯示,對非一致的結果執(zhí)行過濾跳過,以實現(xiàn)對本地計算機所有網(wǎng)絡接口數(shù)據(jù)的篩選及過濾。

4實現(xiàn)

在項目實施中,首先依然通過私有方法獲取本地計算機上全部網(wǎng)絡接口的數(shù)據(jù),并將全部網(wǎng)絡接口數(shù)據(jù)存入名為catego?ry的NetworkInterface類型數(shù)組變量中。然后在對該數(shù)組變量進行循環(huán)遍歷時,先創(chuàng)建用于保存注冊表值項PnPInstanceId對應路徑的字符串類型變量adapterRegKey,并對該變量執(zhí)行只讀打開操作。隨后對其變量中的字符串值進行非空判斷,對空內(nèi)容,認為該計算機中無任何網(wǎng)絡接口,并結束輸出本地計算機網(wǎng)絡接口數(shù)據(jù)模塊的執(zhí)行;對非空內(nèi)容,將其PnPInstanceId的值轉(zhuǎn)換為字符串類型并保存到代碼中名為pnpInstanceID的字符串類型變量中,再對其字符串長度及前三個字符進行判斷,長度大于3且前三個字符等于“PCI”,說明該網(wǎng)絡接口類型為物理網(wǎng)絡接口,將其輸出至前端界面中;否則判斷其表示為虛擬網(wǎng)絡接口,代碼執(zhí)行跳出本次循環(huán)并繼續(xù)進行下一次循環(huán)判斷其他PnPInstanceId值項的操作。

string macAddress;

NetworkInterface[] category = NetworkInterface. GetAllNet?workInterfaces();

foreach (NetworkInterface adapter in category)

{

string adapterRegKey =@"SYSTEM\CurrentControlSet\Con?trol\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\" + adapter.Id +@"\Connection";

RegistryKeyopenKey = Registry.LocalMachine.OpenSubKey (adapterRegKey, false);

if (openKey != null)

{

string pnpInstanceID = openKey. GetValue("PnPInstanceId", "").ToString();

if (pnpInstanceID.Length>3 &&pnpInstanceID.Substring(0, 3)=="PCI")

{

lstAdapter.Items.Add("名稱:"+ adapter.Name);

}

在代碼中增加了通過注冊表對物理網(wǎng)絡接口及虛擬網(wǎng)絡接口的判斷后再次進行編譯和執(zhí)行,并將前端界面顯示的輸出結果與本地計算機設備管理器中的網(wǎng)絡適配器列表進行比對。

5結論

通過在C#程序中對命令空間、類、私有方法的使用,結合對操作系統(tǒng)設備安裝程序類的分析,結合對注冊表的判斷,完成了通過C#語言判斷本地計算機物理網(wǎng)卡差在前端界面進行展示輸出的需求。

作為微軟公司在.NET 時代的旗幟性語言,C#語言是由 C 和 C++衍生出來的面向?qū)ο蟮木幊陶Z言,運行于.NET Frame? work和.NET Core平臺之上的高級程序設計語言,其兼具安全、穩(wěn)定、簡單、優(yōu)雅等特性,以強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。

同時,C#程序設計語言與Windows操作系統(tǒng)同出于微軟公司之手,其操作系統(tǒng)中存在大量的基礎類庫、動態(tài)鏈接庫、接口可以被 C#語言輕易地調(diào)用,以對操作系統(tǒng)進行更深層次的操作。

在本研究中,將.NET平臺中提供的類、方法與注冊表進行組合,滿足項目需求。而對于項目中如修改計算機名、加入或退出AD域等的其他需求,同樣需要充分利用.NET平臺與Windows操作系統(tǒng)深度結合的優(yōu)勢,調(diào)用操作系統(tǒng)中的其他動態(tài)鏈接庫,不斷拓展思路,滿足項目需求,推動項目順利開展。

目前市場上針對桌面運維工程師的運維軟件包數(shù)量較少且功能單一,可定制性低,既不能滿足企業(yè)實際需求,更無法滿足企業(yè)內(nèi)的信息化安全標準。通過本項目的自研,既滿足了工程師實際應用中的需求,減少操作步驟以及誤操作率,在提高工作效率、統(tǒng)一工作標準的同時也符合了企業(yè)內(nèi)部信息化安全的標準。

參考文獻

[1] 左成,虞紅芳.可靠性感知下的虛擬數(shù)據(jù)中心映射算法[J].計算機應用,2015,35(2):299-304.

[2] 陳春凱 . 云計算環(huán)境下基于拓撲感知的虛擬網(wǎng)絡映射研究[J].計算機應用與軟件,2014,31(12):156-160.

[3] 劉光遠,蘇森.面向底層單節(jié)點失效的輕量級可靠虛擬網(wǎng)絡映射算法[J].電子與信息學報,2013,35(11):2644-2649.

【通聯(lián)編輯:朱寶貴】

猜你喜歡
注冊表
更上一層樓 用好注冊表編輯器
注冊表的便捷用法
省卻麻煩 一鍵修改注冊表
學習器揭開注冊表面紗