我想用WMI的JoinDomainOrWorkgroup方法来给机器加域,代码如下:Dim searcher As New ManagementObjectSearcher("select * from win32_computersystem")
Dim computerName As String = Nothing
For Each obj As ManagementObject In searcher.Get
computerName = obj("name")
Next
Console.WriteLine(computerName)
Dim computerSys As New ManagementObject("win32_computersystem=""" & computerName & """")
Dim inParams As ManagementBaseObject = computerSys.GetMethodParameters("JoinDomainOrWorkgroup")
inParams("Name") = "hslcn"
inParams("Password") = "41431337"
inParams("UserName") = "hslcn\fmeng"
inParams("FJoinOptions") = 1
Dim outParams As ManagementBaseObject = computerSys.InvokeMethod( _
"JoinDomainOrWorkgroup", inParams, Nothing)
Console.WriteLine(outParams("returnvalue"))以上代码在32位XP和32位Vista上都能成功,而在64位vista上返回值却是50(ERROR_NOT_SUPPORTED,The request is not supported. ),同时一些其他的WMI命令却可以执行,比如获得机器名、域名。请问这是怎么回事,在64位vista上怎么用WMI命令加域,谢谢了!

解决方案 »

  1.   

    在64位vista上,有部分的功能确实是不能用的。——不光是WMI,一些API的功能也都发生了变化的。——没有亲自实验过,只是看到了一些资料介绍,所以也无法提出比较有创意的建议参考。
    ==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    优惠接单开发,组件控件定制开发,成品源代码批发
    联系方式:Q64180940 全天在线
    ==================================================================
      

  2.   

    哦,这样啊,那64位Vista总得提供一些相应的功能吧,比如新的API、WMI什么的。
    请问哪里有这方面的资料,谢谢了
      

  3.   

    似乎不多——这里接触这方面的人也不多,前段时间还有2个帖子也是问64位的问题,最后都不了了之了。你的情况具体是不是兼容问题,我也不是特别清楚——确实有部分WMI是区分操作系统的,甚至XP和WIN2003都略有不同,何况是64位系统;