您现在的位置:首页 >> 网络通讯 >> 网络通讯 >> 内容

Delphi中判断当前计算机是否加入域或工作组

时间:2011/9/3 15:11:39 点击:

  核心提示:动态调用netapi32.dll中的API函数,示例代码:function IsInDomain: boolean;type TNetRenameMachineInDomain = function(...

动态调用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;

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号