高校计算机

3773考试网计算机等级考试高校计算机正文

Delphi实现对注册表的监视和扫描

来源:fjzsksw.com 2009-11-3 17:49:06

try
  if NTNetGetDCName(nil, nil, pDomain) = 0 then
  Result := WideCharToString(pDomain);
  finally
  NTNetApiBufferFree(pDomain);
  end;
  finally
  FreeLibrary(Libhandle);
  end;
  end;
  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;
  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;

上一页  [1] [2] [3] [4] [5] 下一页

触屏版 电脑版
3773考试网 琼ICP备12003406号-1