加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 针对工作组服务器检查用户凭据

发布时间:2020-12-15 09:25:25 所属栏目:大数据 来源:网络整理
导读:我的应用程序将在客户端台式计算机上的LAN上使用.在此LAN中,有一个专用的 Windows 2k服务器.没有AD. 用户必须填写服务器的用户帐户信息,以便应用程序可以使用此帐户执行一些远程操作(映射网络驱动器) 如何检查此服务器的用户凭据? 映射驱动程序时,如果用户
我的应用程序将在客户端台式计算机上的LAN上使用.在此LAN中,有一个专用的 Windows 2k服务器.没有AD.

用户必须填写服务器的用户帐户信息,以便应用程序可以使用此帐户执行一些远程操作(映射网络驱动器)

如何检查此服务器的用户凭据?

映射驱动程序时,如果用户帐户身份验证不正常,我将收到错误,但我想在尝试映射之前获取此信息.

像LogonUser API函数,但在远程计算机上工作.

谢谢,

解决方法

您可以将 WNetUseConnection函数与CONNECT_INTERACTIVE和CONNECT_PROMPT标志一起使用.这将与空的用户ID和密码参数结合使用,在您输入正确的凭据时调用凭据对话框并连接到网络资源:

procedure TForm1.Button1Click(Sender: TObject);
var
  BufferSize: DWORD;
  ResultFlag: DWORD;
  NetResource: TNetResource;
begin
  NetResource.dwType := RESOURCETYPE_DISK;
  NetResource.lpLocalName := nil;
  NetResource.lpRemoteName := 'MySuperSecretPlace';
  NetResource.lpProvider := nil;
  if WNetUseConnection(Handle,NetResource,nil,CONNECT_INTERACTIVE or
    CONNECT_PROMPT,BufferSize,ResultFlag) = NO_ERROR
  then
    ShowMessage('Connected!');
end;

要在不提示输入凭据的情况下连接到网络资源,请删除上面指定的标志,如下所示,在连接成功时应返回True,在失败时返回False.这是参数说明:

> RemoteName(字符串) – 远程网络名称
> UserName(字符串) – 用于连接网络资源的用户名
>密码(字符串) – 用于连接网络资源的密码

function TryConnect(const RemoteName,UserName,Password: string): Boolean;
var
  BufferSize: DWORD;
  ResultFlag: DWORD;
  NetResource: TNetResource;
begin
  NetResource.dwType := RESOURCETYPE_DISK;
  NetResource.lpLocalName := nil;
  NetResource.lpRemoteName := PChar(RemoteName);
  NetResource.lpProvider := nil;
  Result := WNetUseConnection(0,PChar(UserName),PChar(Password),ResultFlag) = NO_ERROR;
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读