Delphi中判断当前计算机是否加入域或工作组
时间:2011-6-2来源:yang 作者: peng点击: 18次
动态调用netapi32.dll中的API函数,示例代码:
function IsInDomain: boolean;
type
TNetRenameMachineInDomain = function(lpServer, MachineName, lpAccount, Password: PWideChar; Options: Longint): LongInt stdcall;
var
ResultCode: Integer;
NetRenameMachineInDomain: TNetRenameMachineInDomain;
NetAPIHandle: THandle;
const //ref : lmerr.h
NERR_BASE = 2100;
// 机器已加入域
NERR_SetupAlreadyJoined = (NERR_BASE + 591) ;
// 机器当前未加入域
NERR_SetupNotJoined = (NERR_BASE + 592) ;
// 机器是域控制器
NERR_SetupDomainController = (NERR_BASE + 593) ;
// 目标域控制器不支持创建计算机帐户。
NERR_DefaultJoinRequired = (NERR_BASE + 594) ;
// 指定的工作组名称是无效的
NERR_InvalidWorkgroupName = (NERR_BASE + 595) ;
// 指定的计算机名与域控制器上使用的默认语言不兼容
NERR_NameUsesIncompatibleCodePage = (NERR_BASE + 596) ;
// 域中未找到计算机账户
NERR_ComputerAccountNotFound = (NERR_BASE + 597) ;
// 这个版本的Windows不能加入域
NERR_PersonalSku = (NERR_BASE + 598) ;
// 检查DNS解析配置
NERR_SetupCheckDNSConfig = (NERR_BASE + 599) ;
begin
try
NetAPIHandle := LoadLibrary(PChar(‘netapi32.dll‘)) ;
@NetRenameMachineInDomain := GetProcAddress(NetAPIHandle, PChar(‘NetRenameMachineInDomain‘)) ;
ResultCode := NetRenameMachineInDomain(nil, nil, nil, nil, 0) ;
FreeLibrary(NetAPIHandle) ;
finally
end;
Result := ResultCode NERR_SetupNotJoined;
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
if IsInDomain then ShowMessage(‘InDomain‘);
end;