要求:
1。程序不一定运行在域服务器上
2。该IP对应的电脑不一定登录到域中(有可能是登录到WORKGROUP)
3。不需要客户端。给点启发也可以!

解决方案 »

  1.   

    Waiting........................................
      

  2.   

    Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!                Help!
      

  3.   

    The NetUserEnum function provides information about all user accounts on a server.Security RequirementsOnly members of the Administrators or Account operators local group can successfully execute NetUserEnum at levels 1 and 2. No special group membership is required at level 0 or 10.NET_API_STATUS NetUserEnum(    LPWSTR servername,
        DWORD level,
        DWORD filter,
        LPBYTE *bufptr,
        DWORD prefmaxlen,
        LPDWORD entriesread,
        LPDWORD totalentries,
        LPDWORD resume_handle 
       );
      

  4.   

    我只想在一台电脑上运行我的程序,根据IP地址来得知其Window用户帐号!
      

  5.   

    用NetUserEnum 可以阿,不过你先要用IP得到主机名,才能用
      

  6.   

    能不能请高手直接给出Delphi适用的代码!
    包括声明!注意:我不要在服务器上使用这项功能,而希望在任何一台电脑上实现这个功能!
      

  7.   

    关键问题应该在网关那里吧~!如果能够ping通,那么数据连接应该可以。另外也可以改变程序模式~!
      

  8.   

    能不能请高手直接给出Delphi适用NetUserEnum()的代码!包括声明!注意:我不要在服务器上使用这项功能,而希望在任何一台电脑上实现这个功能!
      

  9.   

    具体是关于NetUserEnum()的用法,能否请各位给出详细的Delphi源代码?》
      

  10.   

    要求:
    1。程序不一定运行在域服务器上
    2。该IP对应的电脑不一定登录到域中(有可能是登录到WORKGROUP)
    3。不需要客户端。给点启发也可以!
    ==================================================================
    能不能请高手直接给出Delphi适用NetUserEnum()的代码!包括声明!注意:我不要在服务器上使用这项功能,而希望在任何一台电脑上实现这个功能!==================================================================
    具体是关于NetUserEnum()的用法,能否请各位给出详细的Delphi源代码?==================================================================????????????????????????????????????????????????????????????????
      

  11.   

    具体是关于NetUserEnum()的用法,能否请各位给出详细的Delphi源代码?
      

  12.   

    具体是关于NetUserEnum()的用法,能否请各位给出详细的Delphi源代码?
      

  13.   

    NetUserEnum() 是枚举用户,
    你的题目是:如何根据IP或主机名得到该电脑上正在操作的用户帐号?
    光是NetUserEnum()这个函数还不够,还需要一些其他函数,
      

  14.   

    请“ kiboisme(还是铁棒.....针) ”指点指点!
      

  15.   

    我把代码帖出来:
    //单元文件
    unit NtUserExpand;interfaceuses
      Windows;
      
    type
    USER_INFO_1 = record
      usri1_name: LPWSTR;
      usri1_password: LPWSTR;
      usri1_password_age: DWORD;
      usri1_priv: DWORD;
      usri1_home_dir: LPWSTR;
      usri1_comment: LPWSTR;
      usri1_flags: DWORD;
      usri1_script_path: LPWSTR;
    end;
    lpUSER_INFO_1 = ^USER_INFO_1;
    function NetUserEnum(ServerName: PWideChar;
      Level,
      Filter: DWord;
      var Buffer: Pointer;
      PrefMaxLen: DWord;
      var EntriesRead,
      TotalEntries,
      ResumeHandle: DWord): LongWord; stdcall; external 'netapi32.dll';
    function NetApiBufferFree(pBuffer: PByte): LongInt; stdcall; external  'netapi32.dll';
      
    implementationend.使用例子:
    procedure TMainForm.Button1Click(Sender: TObject);
    var
      EntiesRead: DWORD;
      TotalEntries: DWORD;
      UserInfo: lpUSER_INFO_1;
      lpBuffer: Pointer;
      ResumeHandle: DWord;
      Counter: Integer;
      NetApiStatus: LongWord;
    begin
      ResumeHandle := 0;
      repeat
    // NetApiStatus := NetUserEnum(PChar('\\NT-Domain'), 1, 0, lpBuffer, 0,EntiesRead, TotalEntries, ResumeHandle);
      NetApiStatus := NetUserEnum('\\192.0.0.1', 1, 0, lpBuffer, 0, EntiesRead,
         TotalEntries, ResumeHandle);
      UserInfo := lpBuffer;
      for Counter := 0 to EntiesRead - 1 do begin
        Showmessage(WideCharToString(UserInfo^.usri1_name) + ' --> ' +
        WideCharToString(UserInfo^.usri1_comment));
        Inc(UserInfo);
      end;
      NetApiBufferFree(lpBuffer);
      until (NetApiStatus <> ERROR_MORE_DATA);
    end;
    在使用之前必须建立IPC连接,哪怕是空连接也得建立。
      

  16.   

    nbtstat -an 192.168.1.1
    不行的!
    结果是:Node IpAddress: [192.168.8.164] Scope Id: []           NetBIOS Remote Machine Name Table       Name               Type         Status
        ---------------------------------------------
        CHC-04         <00>  UNIQUE      Registered
        CHC-04         <20>  UNIQUE      Registered
        WORKGROUP      <00>  GROUP       Registered
        WORKGROUP      <1E>  GROUP       Registered
        CHC-04         <03>  UNIQUE      Registered    MAC Address = 00-08-74-18-56-79
      

  17.   

    建立IPC 连接的程序也没有?好吧,我再给你:
    uses
      Windows,winsock,SysUtils,Classes;type
      TNetResourceArray = ^TNetResource;Function IPCConnect(Server , username , Password : String ) : Integer;
    var
      NR : TNetResource;
    begin
      FillChar(NR, SizeOf(NR), 0);
      NR.dwType := RESOURCETYPE_ANY;
      NR.lpLocalName := '';
      NR.lpProvider := '';
      NR.lpRemoteName := pchar(Server);
      Result := WNetAddConnection2(NR, pchar(Password), pchar(UserName), 0);
    end;Function DisIPCConnect(Server : String) : integer;
    begin
      Result := WNetCancelConnection2(pchar(Server),0,True);
    end;
      

  18.   

    例子:
    if IPCConnect('\\192.0.0.1\ipc$,'username','')<>0 then 
      //失败建立空连接:
    if IPCConnect('\\192.0.0.1\ipc$,'','')<>0 then 
      //失败
      

  19.   

    这是列举这台计算机上的所有用户!但是我如何知道现在用的登录帐号是什么呢?是用本机的Administrator、Guest,还是用Domain\DomainUser呢?如何得到!
      

  20.   

    不好意思,我也不知道帮你查了一下资料,看看下一段对你有没有用:
    EdtHostName.Text 为本机的IP地址或远端IP地址(必须开放IPC$,默认为开)procedure TForm1.Button1Click(Sender: TObject);varseaNetResource:NETRESOURCE;seaResult:DWORD;seaAccessBuffer:string[255];seaAccessBufferLength:DWORD;sidbuffer:string[255];lpAccessBuffer:PChar;seaSID:PSID;seaSIDlength:DWORD;seaReferencedDomainName:string[255];seaReferencedDomainNameLength:DWORD;lpReferencedDomainName:PChar;seaSIDnameuse:SID_NAME_USE;tempPchar:Pchar;SidSubCount:PUCHAR;i,j:integer;StoreCount:byte;tempPDWORD:PDWORD;tempDWORD:DWORD;storeSIDsub: array [0..8] of Integer;seaSidIdentify:PSIDIdentifierAuthority;newSID:PSID;seaAccountBuffer:String[255];pAccountName:LPTSTR;AccountLength:DWORD;BlResult:Boolean;SeedLine:string;constAccountType:array [0..8] of string=('','User','Group','Domain','alias','WelknowGroup','Deleted','Invalid','Unknown');beginButton1.Enabled:=False;lpAccessBuffer:=@seaAccessBuffer;lpReferencedDomainName:=@seaReferencedDomainName;seaSID:=@sidbuffer;seaAccessBufferLength:=64;seaSIDLength:=255;seaReferencedDomainNameLength:=255;seaNetResource.dwScope:=RESOURCE_GLOBALNET;seaNetResource.dwType:=RESOURCETYPE_ANY;seaNetResource.lpLocalName:=PChar('');seaNetResource.lpRemoteName:=PChar('\'+EdtHostName.Text+'$');seaNetResource.lpProvider:=PChar('');seaResult:=WNetAddConnection2(seaNetResource,PChar(''),PChar(''),CONNECT_PROMPT);
      

  21.   

    if seaResult=NO_ERROR thenbeginif LookupAccountName(PChar('\'+EdtHostName.Text),Pchar(seedline),seaSID,seaSIDlength,lpReferencedDomainName,seaReferencedDomainNamelength,seaSIDnameuse)thenbegincpDomain.Caption:=string(lpReferencedDomainName);seaSidIdentify:=GetSidIdentifierAuthority(seaSID);SidSubCount:=GetSidSubAuthorityCount(seaSID);StoreCount:=SidSubCount^;for i:=0 to Integer(StoreCount)-1 dobegintempPDWORD:=GetSidSubAuthority(seaSID,i);storeSIDsub[i]:=tempPDWORD^;end;//start to get usernamepAccountName:=@seaAccountBuffer ;seaReferencedDomainNameLength:=255;AccountLength:=255;storeSIDsub[StoreCount-1]:=500;if AllocateAndInitializeSid(seaSidIdentify^,SidSubCount^,StoreSidSub[0],StoreSidSub[1],StoreSidSub[2],StoreSidSub[3],StoreSidSub[4],StoreSidSub[5],StoreSidSub[6],StoreSidSub[7],newSID) thenbeginif LookupAccountSid(PChar('\'+EdtHostName.Text),newsid,pAccountName,AccountLength,lpReferencedDomainName,seaReferencedDomainNameLength,seaSIDnameuse)thenbeginlbAdmin.Caption:=String(pAccountName);ListBox1.Items.Add('\'+lpReferencedDomainName+'+pAccountName+' Built-in Admin');endelseexit;FreeSid(newSID);//tempDWORD:=GetLastError;j:=1;i:=1000;while j<=30 dobeginseaReferencedDomainNamelength:=255;AccountLength:=255;StoreSidSub[StoreCount-1]:=i;AllocateAndInitializeSid(seaSidIdentify^,SidSubCount^,StoreSidSub[0],StoreSidSub[1],StoreSidSub[2],StoreSidSub[3],StoreSidSub[4],StoreSidSub[5],StoreSidSub[6],StoreSidSub[7],newSID);if LookupAccountSid(PChar('\'+EdtHostName.Text),newsid,pAccountName,AccountLength,lpReferencedDomainName,seaReferencedDomainNameLength,seaSIDnameuse)thenbeginif seaSIDnameuse=sidTypeInvalid then j:=j+1else if seaSIDnameuse<>sidTypeDeletedAccount thenbeginj:=0;ListBox1.Items.Add('\'+lpReferencedDomainName+'+pAccountName+' '+AccountType[seaSIDnameuse]);StatusBar1.SimpleText:=pAccountName;end;endelsej:=j+1;Application.ProcessMessages;i:=i+1;FreeSID(newsid);end;end;endelse ShowMessage('Cannot locate sid infomation!');endelse ShowMessage('Connection Error!');WNetCancelConnection2(PChar('\'+EdtHostName.Text+'$'),0,true);Button1.Enabled:=True;end;
      

  22.   

    kiboisme(还是铁棒.....针) :
    请到
    http://expert.csdn.net/Expert/topic/1877/1877636.xml?temp=.6241266
    领分!100分!
      

  23.   

    有谁会想到利用一下以下的JavaScript脚本:
    =====================================================
    <script language=javascript>
    var wshNetwork  = new ActiveXObject("WScript.Network");
    alert("域名       = "+ wshNetwork.UserDomain);
    alert("计算机名   = "+ wshNetwork.ComputerName);
    alert("登录用户名 = "+ wshNetwork.UserName);
    </script>
    =====================================================
    请继续发言
      

  24.   

    先去当,试下这个吧...DameWare NT Utilitiesnbtstat -an IP 是可以的