怎么更改计算机wmi配置,【全自动修改计算机配置】 如何修改计算机配置信息...

摘要:重新安装计算机机房需要做大量的工作,常见的有修改计算机名,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浏览器用户请先下载安装 原版全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值