可以用网络列举函数,查一下,名字好象叫NetworkEnum...,现在手头没有msdn.要不你自己帮忙查一下吧.

解决方案 »

  1.   

        他有個父子關係,csdn的光盤上有一個列舉網絡資源的,例子,可以搜索局域网上所有的域,工作組,計算機,可以做成一個樹型結構.在查一下牠的父結點.就成了.
      

  2.   

    写了一个函数,不过速度奇慢。有没有更好的方法?function GetDomain(Computer:string):string;
    var
      NetResArray1,
      NetResArray2,
      NetResArray3: Array[0..1023] of TNetResource;  R, hEnum, NetResLen: DWORD;
      Count1,Count2,Count3:DWORD;  NetResource: TNetResource;  DomainName,ComputerName:string;  i,j,k:integer;
    begin
      //
      Result:='';  NetResource.dwScope:=2;
      NetResource.dwType:=3;
      NetResource.dwDisplayType:=2;
      NetResource.dwUsage:=2;
      NetResource.lpLocalName:=nil;
      NetResource.lpRemoteName:=nil;
      NetResource.lpComment:=nil;
      NetResource.lpProvider:=nil;
      r:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@NetResource,hEnum);
      if r<>NO_ERROR then
        Exit;  Count1:=$FFFFFFFF;
      NetResLen:=SizeOf(NetResArray1);
      r:=WNetEnumResource(hEnum,Count1,@NetResArray1[0],NetResLen);  WNetCloseEnum(hEnum);  for i:=0 to Count1-1 do
        begin
        NetResource:=NetResArray1[i];
        r:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@NetResource,hEnum);
        if r<>NO_ERROR then
          Continue;    Count2:=$FFFFFFFF;
        NetResLen:=SizeOf(NetResArray2);
        r:=WNetEnumResource(hEnum,Count2,@NetResArray2[0],NetResLen);
        WNetCloseEnum(hEnum);    for j:=0 to Count2-1 do
          begin
          DomainName:=Copy(NetResArray2[j].lpRemoteName,1,255);
          NetResource:=NetResArray2[j];
          r:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@NetResource,hEnum);
          if r<>NO_ERROR then
            Continue;      Count3:=$FFFFFFFF;
          NetResLen:=SizeOf(NetResArray3);
          r:=WNetEnumResource(hEnum,Count3,@NetResArray3[0],NetResLen);
          WNetCloseEnum(hEnum);      for k:=0 to Count3-1 do
            begin
            ComputerName:=Copy(NetResArray3[k].lpRemoteName,3,255);
            if lowercase(ComputerName)=lowercase(Computer) then
              begin
              Result:=DomainName;
              Break
              end;
            end;
          if Result<>'' then Break;
          end;
        if Result<>'' then Break;
        end;
    end;