当前位置:首页 > 心得体会 > 【全自动修改计算机配置】 如何修改计算机配置信息
 

【全自动修改计算机配置】 如何修改计算机配置信息

发布时间:2019-02-22 03:46:16 影响了:

  摘要:重新安装计算机机房需要做大量的工作,常见的有修改计算机名,IP地址及相关配置文件等等,所有这些操作将耗费大量时间,精力。利用MAC地址来识别计算机,设计一套软件来自动完成这项工作,将轻松很多。
  关键词:MAC地址 INI配置文件 机器名 IP
  
  引言
   经过多年的高校微机机房管理工作,经常被重新安装机房弄筋疲力尽。因为重新安装机房需要做大量的工作,常见的有修改计算机名,IP地址,还有一些机房管理软件的配置,考试软件的配置等等,所有这些操作需要耗费大量时间。如果有一个软件能自动帮我们完成这项的工作,那是多么美好的事啊。根据本人的经验和研究,利用VB开发平台,开发出一套自动修改IP、计算机名及相关配置的软件。
   设计思想:根据计算机网卡上的MAC地址来修改IP、计算机名等配置。之所以选择用MAC地址来作为关键字,是因MAC地址很容易获得。手工获得MAC地址,只要进入命令窗口输入IPCONFIG /ALL ,网络上也有很多可以收集局域网MAC地址和计算机名的工具,只要扫描一下,就可以搜索出同一网段的MAC地址和计算机名。
   接着就是程序设计的问题了,首先要让程序识别到网卡的MAC地址,程序识别网卡MAC地址的方法很多,最常用的有API函数和调用ipconfig 命令。API函数在多网卡或有虚拟网卡的时候会出现认错网卡的问题,处理起来比较复杂,为了简单方便,最后选择了调用ipconfig命令来获得MAC地址。
   Public Function strGetNodeID() As String
  Dim WshShell
  Set WshShell = CreateObject("WScript.Shell")
  WshShell.Run "cmd /c ipconfig/all >c:\NodeID.txt", 1, True
  Set WshShell = Nothing
  Dim fso, thefile, ln
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set thefile = fso.OpenTextFile("c:\NodeID.txt", 1)
  Do While thefile.atendofstream <> True
  ln = thefile.ReadLine
  If InStr(ln, "Physical Address") <> 0 Then
  ln = Right(ln, 18)
  Exit Do
  End If
  Loop
  thefile.Close
  fso.DeleteFile ("c:\NodeID.txt")
  Set fso = Nothing
  strGetNodeID = Replace(ln, "-", "")
  End Function
  获得MAC地址之后,再根据数据库中的字段查找到该计算机的机器名、IP地址、及相关配置等相关信息,利用下列函数修改相关的配置。
  
  1 修改计算机IP地址、网关、DNS:
  Public Function ChangeIP(IP As String, NM As String, GW As String, MDNS As String, SDNS As String) As String "返回值说明:返回一个设置的中文说明.
  Dim strComputer, objWMIService, colNetAdapters, strIPAddress, strSubnetMask
  Dim strGateway, strGatewaymetric, strDNS, objNetAdapter, errEnable, errGateways, errDNS
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  Set colNetAdapters = objWMIService.ExecQuery("Select*fromWin32_NetworkAdapterConfigurationwhereIPEnabled=TRUE")
  strIPAddress = Array(IP)"ip地址
  strSubnetMask = Array(NM)"子网掩码
  strGateway = Array(GW)"网关
  strDNS = Array(MDNS, SDNS) "主DNS各备DNS
  strGatewaymetric = Array(1)
  For Each objNetAdapter In colNetAdapters
  errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
  errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
  errDNS = objNetAdapter.SetDNSServerSearchOrder(strDNS)
  If errEnable = 0 And errGateways = 0 And errDNS = 0 Then
  ChangeIP = "设置成功"
  Else
   If errEnable = 0 ThenChangeIP = "IP地址和子网掩码设置成功,"
   Else ChangeIP = "IP地址或子网掩码设置失败,"
   End If
   If errGateways = 0 ThenChangeIP = ChangeIP & "网关设置成功,"
   Else ChangeIP = ChangeIP & "默认网关设置失败,"
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文    End If
   If errDNS = 0 ThenChangeIP = ChangeIP & "DNS设置成功"
   ElseChangeIP = ChangeIP & "DNS设置失败"
   End If
  End If
  Next
  End Function
  
  2 修改计算机名、工作组
  Public Function setCName_JoinGroup(CName As String, Joingroup As String) As Boolean
  Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
  Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
  For Each objComputer In colComputers
  Err = objComputer.Rename(CName)"机器名
  ReturnValue = objComputer.JoinDomainOrWorkGroup(Joingroup)"工作组
  Next
  End Function
  
  3 读写ini配置文件,申明API 函数
  GetPrivateProfileInt、GetPrivateProfileString、WritePrivateProfileString
  " 指定要写的 INI 文件名
  Private IniFileName As String,ErrorMsg As String
  Private Sub Class_Initialize()
   IniFileName = vbNullString
   ErrorMsg = vbNullString
  End Sub
   Public Sub SpecifyIni(FilePathName)
   IniFileName = Trim(FilePathName)
  End Sub
   Private Function NoIniFile() As Boolean
   NoIniFile = True
   If IniFileName = vbNullString Then
   ErrorMsg = "没有指定 INI 文件": Exit Function
   End If
   ErrorMsg = vbNullString
   NoIniFile = False
  End Function
   Public Function WriteString(Section As String, key As String, value As String) As Boolean
   WriteString = False
   If NoIniFile() Then Exit Function
   If WritePrivateProfileString(Section, key, value, IniFileName) = 0 Then
   ErrorMsg = "写入失败": Exit Function
  End If
   WriteString = True
  End Function
  Public Function ReadString(Section As String, key As String, Size As Long) As String
   Dim ReturnStr As String, ReturnLng As Long
   ReadString = vbNullString
   If NoIniFile() Then Exit Function
   ReturnStr = Space(Size)
   ReturnLng = GetPrivateProfileString(Section, key, vbNullString, ReturnStr, Size, IniFileName)
   ReadString = Left(ReturnStr, ReturnLng)
  End Function
  最后:有了这些代码,在主窗口中调用这些函数,就能轻轻松松的设计一套全自动修改计算机配置的小软件了,加入注册表程序,放在启动项runonce里,程序就会实现在计算机安装系统后,第一次启动时加载,进行修改计算机名,IP,及相关的配置文件。
  
  结语
   该软件已经成功的运用于我校的计算机机房的系统安装上,节省了大量的人力物力。该软件还可以应用在网吧及其它企业,计算机相对比较多的机房里,进行全自动系统安装。
  
  参考文献
  [1] 陈冬亮主编.Visual Basic 6.0程序设计实用教程.机械工业出版社,2008.
  [2] 盛明兰,杨芳明编著.Visual Basic程序设计案例汇编.中国铁道出版社,2007.
  [3] 高春艳,刘彬彬,王斌编著.Visual Basic开发技术大全.人民邮电出版社,2007.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3