陳佳佳 王超
摘要:高校公共機房的設備越來越多。一般情況下,在計算機軟硬件系統更新后計算機IP地址與計算機名等信息不匹配,需要手工配置。為解決這些問題,本文提供了計算機機房管理的自動化改造軟件,利用Visual Basic開發該系統,顯示學生機的計算機名、IP地址、MAC地址等信息,簡化了人工手動配置的工作。且相對于聯想的同傳系統,該系統還是輕量化的。
關鍵詞:高校公共機房;自動化改造軟件;Visual Basic;輕量化
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)28-0236-03
Automatic Management of Computer Room
CHEN Jia-jia, WANG Chao
(College of Medical Engineering and Technology, Xinjiang Medical University, Urumqi 830011, China)
Abstract: There are more and more equipment in public computer rooms in colleges and universities. Under normal circumstances, after the computer software and hardware system is updated, the computer IP address does not match the computer name and other information, and needs to be manually configured. In order to solve these problems, this paper provides the automation transformation software of computer room management. The system is developed by Visual Basic, which displays the computer name, IP address, MAC address and other information of the student machine, which simplifies the manual manual configuration. And compared to Lenovo's simultaneous transmission system, the system is still lightweight.
Key words: University public computer room; automation transformation software; Visual Basic; lightweight
目前,計算機機房管理在高校教學治理中的重要性日漸提升[1]。教師的教學質量、學生的專業技能掌握程度以及各種無紙化考試的有效性將直接受到計算機機房管理水平和維護水平的影響,它表現了一所高校信息化的總體水準[2]。高校計算機機房作為同學們研習計算機基礎知識與專業技能的重要場所,是高校計算機講學和科研的重要基地,同時是學生共享網絡資源查閱相關資料的重要途徑,而且越來越多的高校為了方便考試,選擇利用計算機進行無紙化考試,但在進行無紙化考試之前,計算機管理者需要對每一臺計算機的IP地址進行查看并貼上相應的號碼牌用以標識,工作量大且繁復。另外,計算機管理者需要根據學生課程要求對計算機進行軟件的更新及系統的重裝,可重裝后用戶名和IP地址等都會變為同一初始值,管理者需對每一臺計算機進行修改和配置。所以,計算機機房的管理和維護十分必要。而管理人員唯有深刻明了計算機機房的管理現狀和存在的問題,才能建立科學有用的管理辦法,切實做好計算機機房的管理與維護工作,充分提高計算機設備的使用效率,保證平常的教學、培訓和測驗工作正常進行 [3]。
1 軟件總體設計
根據對計算機機房管理員日常工作內容的調查和了解,該軟件設計了三個程序:學生機上運行收集信息的客戶端程序,教師機上運行的服務端程序及學生機上運行自動修改配置信息的配置端程序。運行機制如下圖1所示:
首先客戶端程序在學生機進行本地掃描收集信息,與教師機的服務端程序建立連接,再對每一臺學生機進行IP地址、MAC地址、用戶名和計算機名的收集,將其數據傳輸給教師機的服務端程序。服務端獲取學生機傳輸的數據即每臺學生機的IP地址、MAC地址、用戶名和計算機名后,就可以將這些信息匯集并且顯示成數據列表,然后導出配置信息保存為XML或其他格式更簡單的文本文件。學生機上的配置端程序以保存后的文本文件為配置信息,與本地掃描到的IP地址、MAC地址、用戶名和計算機名進行匹配比對。若一致,說明該學生機的信息已經正確配置,程序退出;若不一致,則按照配置文件的記錄進行修改。
2 軟件的詳細設計和實現
2.1 客戶端程序的設計與實現
客戶端程序的設計完成了前面階段確定下來的系統需求,通過這個窗口顯示本機IP地址以及通過教師機服務端給予編號,也可以最小化或者關閉。
同時,客戶端程序會加載winsock控件,獲取本機物理地址。通過MAC地址逐行比對CSV文件并對比含有本地mac地址記錄的其他字段,保證本地的配置信息和這些字段一致。Timer為高精度計時器,在窗體上添加一個timer控件,定時和服務端建立連接發送本機當前的配置信息。代碼如圖2、圖3所示:
2.2 客戶機的配置端
客戶機的配置端以本地的XML文件內容來配置本地計算機。為了實現計算機名等信息的讀取和修改,我們盡量使用MSDN上提供的API和組件,這樣代碼會比較穩定。但在實踐時不是總能找到合適的組件和API,所以我們不得不通過修改注冊表來實現。
2.2.1 運用VBA讀取計算機名
運用VBA讀取計算機名,代碼如圖4所示:
開始,我們采用VBA的方式讀取計算機名,它的API比較簡單。Visual Basic for Applications(VBA)是Visual Basic的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言[4]。但是,若計算機名通過修改注冊表的ComputerName項完成時,再用VBA方法讀取計算機名需重啟計算機才能實現,因此我們采用通過注冊表讀取計算機名。
2.2.2 通過注冊表讀取計算機名
為了讓VB操作注冊表,需要添加WScript.Shell對象。WScript.Shell是WshShell對象的ProgID,創建WshShell對象可以類似cmd的方式運行程序,例如操作注冊表、創建快捷方式、訪問系統文件夾、管理環境變量等。從注冊表中讀取計算機名,應用的讀取路徑為HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName\ComputerName。
通過注冊表讀取計算機名代碼如圖5所示:
2.2.3 通過注冊表修改計算機名
在命令提示符下用hostname命令可以查看本機的主機名,該命令用到了netbios協議,netbios名是在win98這樣的系統下用于標示計算機的,在現行的一些操作系統中它依然存在,只是默認和計算機名相同,但僅限其前15位,因為netbios名最大也才16位,最后一位用來某種服務或應用程序。我們計算機機房的PC機都是統一成三位的ascii碼。
computername就是本機的netbios,看翻譯好像是計算機名,其實不要被誤解了,在注冊表中,名為hostname的項的鍵值才是真正的計算機名,也稱之為主機名。我們還發現與該鍵值相等的還有ActiveComputerName,即會話過程中提供的計算機名。綜上,修改注冊表中的計算機名即hostname的項的鍵值有:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters路徑下NV Hostname和Hostname的值。
通過注冊表修改計算機名代碼如圖6所示:
2.3 讀取和修改計算機IP地址
對于網絡參數的管理,我們加載了VB中的winsock控件,可以獲取計算機物理地址。引用WMI工程,WMI腳本對象庫由24個對象組成,我們一般只用到其中的四個對象,其繼承和層級關系如下:
SwbemLocator教本庫對象→SwbemServicesWMI服務對象→SwbemObjectSet類實例集合對象→SwbemObject類的實例。
winmgmts表示為WMI服務,利用WMI服務獲取系統信息。
SwbemServices.ExecQuery(strQuery),strQuery為WMI查詢語言(WQL)構造的一個查詢語句字符串。
root\cimv2 在這個命名空間里包括了絕大多數與計算機、操作系統相關聯的類。
readIp = objSWbemObject.IPAddress(0) 設置網卡IP地址。
讀取計算機IP地址代碼如圖7所示:
同理,修改計算機IP地址也是應用winsock控件,SwbemObjectSet對象,代碼如圖8所示:
2.4 服務端程序的設計與實現
服務端程序通過建立多個http連接來收集局域網內安裝客戶端的計算機的電腦名、IP地址、MAC地址等信息,統一保存到info.xml文件中。如圖9、圖10所示:
3 結語
在研究的實現過程中,我發現軟件開發并沒有想象中的那么簡單,始終無法真正地將課本知識運用到實踐中,這讓我意識到,程序員具備豐富專業知識的必要性和團隊協作的重要性。同時,也認識到良好的代碼編寫習慣,不但有助于代碼的移植和糾錯,也有助于不同技術人員之間的協作。作為一個程序員,對需求的理解能力也是很重要的,只有真正理解了一個模塊的作用,才會寫出高效率的代碼,才能使整個軟件項目做出來更加完善。現階段系統已基本完善,但還存在許多不足之處,如界面不夠美觀、系統不夠人性化等,這些問題都有待解決。下一階段,我們需要精簡模塊,如讓服務端不需要客戶端就可以收集局域網內的計算機的mac地址等信息,應用多線程等技術提高系統的效率。
參考文獻:
[1] 忻友.淺談我國銀行計算機管理系統維護的現狀與對策[J].廣東科技.2012(13):223-224.
[2] 焦純,陳馬丁.利用API接口實現VB3_0通訊程序設計.軟件世界.1997(2):41-43.
[3] 劉琪.計算機局域網絡IP地址的自動修改.科技資訊.2017(3):82.
[4] 黨小云,于衛紅.VBA在多媒體課件中的運用.電腦編程技巧與維護.2012(2):130-132.
[5] 沈洪,施明利,朱軍.VB程序設計.清華大學出版社.2009(7):227.
【通聯編輯:梁書】