4

Windows ユーザー A (管理者権限を持つ) と B (制限されたアクセス権限を持つ) を考えてみましょう。また、ユーザー A のみがアクセスできるサーバー上のデータ フォルダー。

私が直面している課題は、ユーザー B を介して Windows にログインし、ユーザー A の資格情報をプログラムで提供してデータ フォルダーにアクセスしようとする Delphi アプリケーションを介してログインすることです。

この目的を達成できる API 関数はありますか?

4

1 に答える 1

7

および関数を使用して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.
于 2013-06-12T16:31:36.867 に答える