连接WMI:(Imports System.Management)
//wmi root/cimv2命名空间
oConnOpts.Username = user
oConnOpts.Password = password
oConnOpts.Impersonation = ImpersonationLevel.Impersonate
oConnOpts.EnablePrivileges = True
Scope = New ManagementScope("//" & strWMI & "/root/cimv2", oConnOpts)
Scope.connect()
创建变量
Dim wmiPath As New ManagementPath("win32_Environment")
Dim mc As New ManagementClass(Scope, wmiPath, Nothing)
mc.Get()
Dim mo As ManagementObject = mc.CreateInstance()
mo.SetPropertyValue("Name", keyName)
mo.SetPropertyValue("VariableValue", KeyValue)
mo.SetPropertyValue("UserName", "<System>")
mo.Put()
修改变量值
//keyName 环境变量名称
Dim searcher As New ManagementObjectSearcher("//" & machine & "/root/cimv2", "SELECT * FROM Win32_Environment WHERE Name='" & keyName & "'")
searcher.Scope = Scope
If searcher.Get().Count > 0 Then
For Each queryObj As ManagementObject In searcher.Get()
queryObj.SetPropertyValue("VariableValue", KeyValue)
queryObj.Put()
SubLog.WriteLog(DateTime.Now.ToString() & ": " & machine & " setting the environment Variables: " & keyName & " & value: " & KeyValue & vbCrLf)
Next