如果程序以普通用户运行,如果需要管理员权限来做某些事情,这个时候需要临时提升权限,完成后恢复普通用户权限,该如何做?
var
lngLogonType, lngLogonProvider : Integer;
lngTokenHandle, hAccessToken : THandle;
strAdminUser, strAdminDomain, strAdminPassword : String;
blnResult : Boolean;
lngLogonType := LOGON32_LOGON_INTERACTIVE; // LOGON32_LOGON_NETWORK;
lngLogonProvider := LOGON32_PROVIDER_DEFAULT;
strAdminUser := 'AdminUserName';
strAdminDomain := 'DomainName';
strAdminPassword := '******';
blnResult := LogonUser(PChar(strAdminUser), PChar(strAdminDomain),
PChar(strAdminPassword),lngLogonType, lngLogonProvider,lngTokenHandle);
if not blnResult then begin
LastError := 'Can''t Logon User ' + strAdminUser;
exit;
end;
blnResult := ImpersonateLoggedOnUser(lngTokenHandle);
if not blnResult then begin
LastError := 'Can''t Impersonate Logged On User';
exit;
end;