要求:
1。程序不一定运行在域服务器上
2。该IP对应的电脑不一定登录到域中(有可能是登录到WORKGROUP)
3。不需要客户端。给点启发也可以!
1。程序不一定运行在域服务器上
2。该IP对应的电脑不一定登录到域中(有可能是登录到WORKGROUP)
3。不需要客户端。给点启发也可以!
解决方案 »
- 用户每天将考勤数据导出为文本文件,那么是不是每天都要在程序中读取文本文件记录行还是只在月底读一次
- Statement expected but 'PROCEDURE' found,请高手解决
- [Error] Main.pas(335): Incompatible types: 'TTreeNode' and 'ShortString'
- 针式打印机 打印标签
- 设置dbgrid中选中行的颜色
- [菜鸟问题]恳求高手告之:怎样将Form2放到Form1的Panel1中(在线等待)谢谢!
- Qreport中怎么设置虚线呢?想在报表中打印一条虚线,且是竖的虚线!
- 请问如何在delphi中调用系统默认的电子邮件程序,在线等待,立即结贴!
- 所谓的客户端与服务器端的握手是什么意思?如何得到中间的信息?
- 小弟第一次用DELPHI编写数据库应用程序,碰到关于字符集的问题,请大家帮忙。
- 背景音乐文件的替换?
- [问题]在一个窗体里有15个edit控件,要同时改变它们的Enable属性。怎样做最简单? 谢谢。
DWORD level,
DWORD filter,
LPBYTE *bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
LPDWORD resume_handle
);
包括声明!注意:我不要在服务器上使用这项功能,而希望在任何一台电脑上实现这个功能!
1。程序不一定运行在域服务器上
2。该IP对应的电脑不一定登录到域中(有可能是登录到WORKGROUP)
3。不需要客户端。给点启发也可以!
==================================================================
能不能请高手直接给出Delphi适用NetUserEnum()的代码!包括声明!注意:我不要在服务器上使用这项功能,而希望在任何一台电脑上实现这个功能!==================================================================
具体是关于NetUserEnum()的用法,能否请各位给出详细的Delphi源代码?==================================================================????????????????????????????????????????????????????????????????
你的题目是:如何根据IP或主机名得到该电脑上正在操作的用户帐号?
光是NetUserEnum()这个函数还不够,还需要一些其他函数,
//单元文件
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连接,哪怕是空连接也得建立。
不行的!
结果是: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
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;
if IPCConnect('\\192.0.0.1\ipc$,'username','')<>0 then
//失败建立空连接:
if IPCConnect('\\192.0.0.1\ipc$,'','')<>0 then
//失败
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);
请到
http://expert.csdn.net/Expert/topic/1877/1877636.xml?temp=.6241266
领分!100分!
=====================================================
<script language=javascript>
var wshNetwork = new ActiveXObject("WScript.Network");
alert("域名 = "+ wshNetwork.UserDomain);
alert("计算机名 = "+ wshNetwork.ComputerName);
alert("登录用户名 = "+ wshNetwork.UserName);
</script>
=====================================================
请继续发言