如何得到操作系统当前登录的域(或者没有登录到域)? rt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function GetDomainName: AnsiString; type WKSTA_INFO_100 = record wki100_platform_id: Integer; wki100_computername: PWideChar; wki100_langroup: PWideChar; wki100_ver_major: Integer; wki100_ver_minor: Integer; end; WKSTA_USER_INFO_1 = record wkui1_username: PChar; wkui1_logon_domain: PChar; wkui1_logon_server: PChar; wkui1_oth_domains: PChar; end; type //Win9X ANSI prototypes from RADMIN32.DLL and RLOCAL32.DLL TWin95_NetUserGetInfo = function(ServerName, UserName: PChar; Level: DWORD; var BfrPtr: Pointer): Integer; stdcall; TWin95_NetApiBufferFree = function(BufPtr: Pointer): Integer; stdcall; TWin95_NetWkstaUserGetInfo = function(Reserved: PChar; Level: Integer; var BufPtr: Pointer): Integer; stdcall; //WinNT UNICODE equivalents from NETAPI32.DLL TWinNT_NetWkstaGetInfo = function(ServerName: PWideChar; level: Integer; var BufPtr: Pointer): Integer; stdcall; TWinNT_NetApiBufferFree = function(BufPtr: Pointer): Integer; stdcall; function IsWinNT: Boolean; var VersionInfo: TOSVersionInfo; begin VersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); Result := GetVersionEx(VersionInfo); if Result then Result := VersionInfo.dwPlatformID = VER_PLATFORM_WIN32_NT; end; var Win95_NetUserGetInfo: TWin95_NetUserGetInfo; Win95_NetWkstaUserGetInfo: TWin95_NetWkstaUserGetInfo; Win95_NetApiBufferFree: TWin95_NetApiBufferFree; WinNT_NetWkstaGetInfo: TWinNT_NetWkstaGetInfo; WinNT_NetApiBufferFree: TWinNT_NetApiBufferFree; WSNT: ^WKSTA_INFO_100; WS95: ^WKSTA_USER_INFO_1; EC: DWORD; hNETAPI: THandle; begin try Result := ''; if IsWinNT then begin hNETAPI := LoadLibrary('NETAPI32.DLL'); if hNETAPI <> 0 then begin @WinNT_NetWkstaGetInfo := GetProcAddress(hNETAPI, 'NetWkstaGetInfo'); @WinNT_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree'); EC := WinNT_NetWkstaGetInfo(nil, 100, Pointer(WSNT)); if EC = 0 then begin Result := WideCharToString(WSNT^.wki100_langroup); WinNT_NetApiBufferFree(Pointer(WSNT)); end; end; end else begin hNETAPI := LoadLibrary('RADMIN32.DLL'); if hNETAPI <> 0 then begin @Win95_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree'); @Win95_NetUserGetInfo := GetProcAddress(hNETAPI, 'NetUserGetInfoA'); EC := Win95_NetWkstaUserGetInfo(nil, 1, Pointer(WS95)); if EC = 0 then begin Result := WS95^.wkui1_logon_domain; Win95_NetApiBufferFree(Pointer(WS95)); end; end; end; finally if hNETAPI <> 0 then FreeLibrary(hNETAPI); end; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetDomainName); end; To aiirii(ari-爱的眼睛) : Win98下不支持!小弟正是要解决98下获取域名的问题!拜托再指点一下! 如何在TTabSet的Tab上自画出关闭按钮 奇怪的select 語句 招3名DELPHI程序开发人员 百分求刘艺《delphi面向对象编程思想》电子版。 如何设置Tchart控件来显示数据值? 谁知道哪一个牌子的IC卡读写器比较平 用setregistrydata时有下列提示(代码如下) 丑小丫,没有你说的那个API呀。 VB控件调用,急! Form打印的问题???????? 日期类型字段是否能做为主键呢? 存储过程调用失败。一个很奇怪的问题。。。。高手来看看呀。。。。。。。
type
WKSTA_INFO_100 = record
wki100_platform_id: Integer;
wki100_computername: PWideChar;
wki100_langroup: PWideChar;
wki100_ver_major: Integer;
wki100_ver_minor: Integer;
end; WKSTA_USER_INFO_1 = record
wkui1_username: PChar;
wkui1_logon_domain: PChar;
wkui1_logon_server: PChar;
wkui1_oth_domains: PChar;
end;
type
//Win9X ANSI prototypes from RADMIN32.DLL and RLOCAL32.DLL TWin95_NetUserGetInfo = function(ServerName, UserName: PChar; Level: DWORD; var
BfrPtr: Pointer): Integer;
stdcall;
TWin95_NetApiBufferFree = function(BufPtr: Pointer): Integer;
stdcall;
TWin95_NetWkstaUserGetInfo = function(Reserved: PChar; Level: Integer; var
BufPtr: Pointer): Integer;
stdcall; //WinNT UNICODE equivalents from NETAPI32.DLL TWinNT_NetWkstaGetInfo = function(ServerName: PWideChar; level: Integer; var
BufPtr: Pointer): Integer;
stdcall;
TWinNT_NetApiBufferFree = function(BufPtr: Pointer): Integer;
stdcall; function IsWinNT: Boolean;
var
VersionInfo: TOSVersionInfo;
begin
VersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
Result := GetVersionEx(VersionInfo);
if Result then
Result := VersionInfo.dwPlatformID = VER_PLATFORM_WIN32_NT;
end;
var Win95_NetUserGetInfo: TWin95_NetUserGetInfo;
Win95_NetWkstaUserGetInfo: TWin95_NetWkstaUserGetInfo;
Win95_NetApiBufferFree: TWin95_NetApiBufferFree; WinNT_NetWkstaGetInfo: TWinNT_NetWkstaGetInfo;
WinNT_NetApiBufferFree: TWinNT_NetApiBufferFree; WSNT: ^WKSTA_INFO_100;
WS95: ^WKSTA_USER_INFO_1; EC: DWORD;
hNETAPI: THandle;
begin
try Result := ''; if IsWinNT then
begin
hNETAPI := LoadLibrary('NETAPI32.DLL');
if hNETAPI <> 0 then
begin @WinNT_NetWkstaGetInfo := GetProcAddress(hNETAPI, 'NetWkstaGetInfo');
@WinNT_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree'); EC := WinNT_NetWkstaGetInfo(nil, 100, Pointer(WSNT));
if EC = 0 then
begin
Result := WideCharToString(WSNT^.wki100_langroup);
WinNT_NetApiBufferFree(Pointer(WSNT));
end;
end;
end
else
begin
hNETAPI := LoadLibrary('RADMIN32.DLL');
if hNETAPI <> 0 then
begin @Win95_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree');
@Win95_NetUserGetInfo := GetProcAddress(hNETAPI, 'NetUserGetInfoA'); EC := Win95_NetWkstaUserGetInfo(nil, 1, Pointer(WS95));
if EC = 0 then
begin
Result := WS95^.wkui1_logon_domain;
Win95_NetApiBufferFree(Pointer(WS95));
end;
end;
end; finally
if hNETAPI <> 0 then
FreeLibrary(hNETAPI);
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetDomainName);
end;
Win98下不支持!小弟正是要解决98下获取域名的问题!拜托再指点一下!