微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – 通过提供凭证进行程序化登录

考虑 Windows用户A(具有管理权限)和B(受限访问权限).
也是位于服务器上的数据文件夹,只有用户A才能访问该数据文件夹.

我面临的挑战是通过用户B登录窗口,并通过我的Delphi应用程序尝试以编程方式提供用户A的凭据来访问数据文件夹.

是否有API功能可以实现这一目标?

解决方法

您可以使用 LogonUser,ImpersonateLoggedOnUserRevertToSelf函数模拟登录用户访问数据文件夹.

试试这个样本

{$APPTYPE CONSOLE}

uses
  Windows,SysUtils;

function ConnectAs(const lpszUsername,lpszPassword: string): Boolean;
var
  hToken       : THandle;
begin
  Result := logonUser(PChar(lpszUsername),nil,PChar(lpszPassword),logoN32_logoN_INteraCTIVE,logoN32_PROVIDER_DEFAULT,hToken);
  if Result then
    Result := ImpersonateLoggedOnUser(hToken)
  else
  RaiseLastOSError;
end;

begin
  try
   ConnectAs('Admin','Password');
   //do something here


   //terminates the impersonation
   RevertToSelf;

  except
    on E: Exception do
      Writeln(E.ClassName,': ',E.Message);
  end;
  readln;
end.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐