請問如何抓取windows下用戶群組及用戶 |
尚未結案
|
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
wushang
一般會員 發表:2 回覆:13 積分:13 註冊:2003-02-10 發送簡訊給我 |
通過組名得到網絡電腦名稱列表:
function GetUsers(GroupName: String;var List : TStringList): boolean;
var
NetResource : TNetResource;
Buf : Pointer;
Count,BufSize,Res : DWord;
Ind : Integer;
lphEnum : THandle;
Temp : TNetResourceArray;
begin
Result := false;
List.Clear;
FillChar(NetResource,Sizeof(NetResource),0);
NetResource.lpRemoteName := @GroupName[1];
NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;
NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
NetResource.dwScope := RESOURCETYPE_DISK;
res := WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@NetResource,lphEnum);
if res<> no_error then Exit;
while true do
begin
Count := $FFFFFFFF;
BufSize := 8192;
GetMem(Buf,BufSize);
res := WNetEnumResource(lphEnum,Count,Pointer(Buf),BufSize);
if res = error_no_more_ITEMS then break;
if res <> no_error then Exit;
Temp := tnetresourceArray(Buf);
for Ind := 0 to Count-1 do
begin
List.Add(Temp^.lpRemoteName);
Inc(Temp);
end;
end;
res := WNetCloseEnum(lphEnum);
if res<>No_error then Exit;
result := true;
freemem(Buf);
end;
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, NetUsers; type TForm1 = class(TForm) NetUsers1: TNetUsers; Button1: TButton; ListBox1: TListBox; ListBox2: TListBox; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin // 用戶群組 NetUsers1.GetServerList; ListBox1.Clear; ListBox1.Items.AddStrings(NetUsers1.List); // 用戶 NetUsers1.Server := ListBox1.Items[0]; NetUsers1.GetUserList; ListBox2.Clear; ListBox2.Items.AddStrings(NetUsers1.List); end; end.網海無涯,學無止境! |
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
引言: untuser 無法使用,找不到netusers.pas.或NetUsers.dcuBecause did not install the flyup the fat and fat wrapping http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28828 Can't use that example~~ < src="http://delphi.ktop.com.tw/download/upload\33223_qoo.gif">網海無涯,學無止境! 發表人 - qoo1234 於 2003/07/06 00:23:03 |
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
引言: netuser 的demo 抓到是主機名,不是userThat possibility you ask wrong. oh! Possibility the matter that you want to ask: How to grab at the windows the sever the list of the user! < src="http://delphi.ktop.com.tw/download/upload\33223_qoo.gif">網海無涯,學無止境! |
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
Simple example:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Function GetUserFromWindows: string; Var UserName : string; UserNameLen : Dword; Begin UserNameLen := 255; SetLength(userName, UserNameLen); If GetUserName(PChar(UserName), UserNameLen) Then Result := Copy(UserName,1,UserNameLen - 1) Else Result := 'Unknown'; End; procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption:=GetUserFromWindows; end; end.網海無涯,學無止境! 發表人 - qoo1234 於 2003/07/06 01:12:09 |
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
只要取得HKEY_CURRENT_USER\Software\Microsoft\MS Setup (ACME)\User Info
的資料,即可得到使用名單。 簡單範例:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Registry; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Reg: TRegistry; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('\Software\Microsoft\MS Setup (ACME)\User Info', True); edit1.text := Reg.ReadString('DefName'); Reg.free; end; end.網海無涯,學無止境! 發表人 - qoo1234 於 2003/07/06 03:14:19 |
jonescn2001
一般會員 發表:1 回覆:8 積分:1 註冊:2003-03-16 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |