最近老师给我一个题目叫我用VB编一个程序来更改计算机工作组名,我弄好几天还是没弄出来,求大家帮帮忙,指点指点。谢谢了〉〉!

解决方案 »

  1.   


    Private Sub Form_Load()
        strComputer = "."           
        strNameSpace = "root\cimv2" 
        strClass = "Win32_ComputerSystem"  
        Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")    
        Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, strNameSpace)  
        Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass)  
        For Each objSWbemObject In objSWbemObjectSet
            Me.Capiton objSWbemObject.WorkGroup
        Next
        Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE WorkGroup = '" & Me.Caption & "'")   
        For Each objSWbemObject In objSWbemObjectSet
            Me.Print "计算机所属工作组更改为:" & objSWbemObject.WorkGroup = "TT"
        Next
    End Sub
      

  2.   

    楼上的代码只能在XP上起着用2K不行2003没测试过
      

  3.   

    我的系统确实是XP的,WMI1.2,是不是WMI在其他系统需要另安?上面代码里没有申明使用WMI。如果想用上面代码可以检查一下计算机上的WMI。
      

  4.   

    恩恩,我以前的回复有些问题,我也在学习中,哈哈,用的真不怎么样用下面的代码可以了。
    '测试代码前请查看操作系统种类,XP/03都可以,2K不行,并且添加对WMI的引用到工程当中
    Private Sub Form_Click()
    strDomain = "TT"
    Set objNetwork = CreateObject("WScript.Network")
    strComputer = objNetwork.ComputerName
    Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
    strComputer & "'")
    ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, Null, Null, Null, Null)
    MsgBox "完毕"
    End Sub
    '以上代码只能用于XP/2003中,对于2000是无效的.上面的strDomain = "TT"指定了需要加入的新工作组名称.
    '2K由于我没安装,提供一种办法,也是使用WMI脚本,当然了,具我所看的说明,这种办法应该是使用于XP/2K/03等操作系统的,但是需要历遍每一个网络配置器并进行相应设置才行.使用的是Win32_NetworkAdapterConfiguration 类的 SetDNSDomain() 方法
    稍后我测试一下
      

  5.   

    ..非常遗憾啊.....嘎嘎,这个说明上没有对SetDNSDomain() 的参数具体进行说明,很明显这个SetDNSDomain() 方法是设置DNS域的,一定要用特定参数才能更改工作组,就象上面我给出的objComputer.JoinDomainOrWorkGroup(strDomain, Null, Null, Null, Null),这里只指定了第一个参数,当最后一个参数为NULL时,才会把第一个参数当作工作组处理,并且执行加入操作.我没法继续测试了..如果一定要在2K等系统上实现的话,可以使用创建安装包来更新目标计算机上的WMI来达到目的.也就是把2K的WMI用你的XP的WMI覆盖就可以了,或者说升级一下,我用的WMI版本是XP自带的1.2......问题到此结束..不再回复了,我觉得我不会再有什么新想法了.