Ajustar Privilégios no 2k

Delphi

04/07/2006

Alguém aki já conseguiu utilizar a função para habilitar recursos no 2k
Diz que um opu mais privilégios não existem... o detalhe é que NENHUM funciona !!

NTSetPrivilege(SE_CREATE_TOKEN_NAME, TRUE);

const
  SE_CREATE_TOKEN_NAME = ´SeCreateTokenPrivilege´;
  SE_ASSIGNPRIMARYTOKEN_NAME = ´SeAssignPrimaryTokenPrivilege´;
  SE_LOCK_MEMORY_NAME = ´SeLockMemoryPrivilege´;
  SE_INCREASE_QUOTA_NAME = ´SeIncreaseQuotaPrivilege´;
  SE_UNSOLICITED_INPUT_NAME = ´SeUnsolicitedInputPrivilege´;
  SE_MACHINE_ACCOUNT_NAME = ´SeMachineAccountPrivilege´;
  SE_TCB_NAME = ´SeTcbPrivilege´;
  SE_SECURITY_NAME = ´SeSecurityPrivilege´;
  SE_TAKE_OWNERSHIP_NAME = ´SeTakeOwnershipPrivilege´;
  SE_LOAD_DRIVER_NAME = ´SeLoadDriverPrivilege´;
  SE_SYSTEM_PROFILE_NAME = ´SeSystemProfilePrivilege´;
  SE_SYSTEMTIME_NAME = ´SeSystemtimePrivilege´;
  SE_PROF_SINGLE_PROCESS_NAME = ´SeProfileSingleProcessPrivilege´;
  SE_INC_BASE_PRIORITY_NAME = ´SeIncreaseBasePriorityPrivilege´;
  SE_CREATE_PAGEFILE_NAME = ´SeCreatePagefilePrivilege´;
  SE_CREATE_PERMANENT_NAME = ´SeCreatePermanentPrivilege´;
  SE_BACKUP_NAME = ´SeBackupPrivilege´;
  SE_RESTORE_NAME = ´SeRestorePrivilege´;
  SE_SHUTDOWN_NAME = ´SeShutdownPrivilege´;
  SE_DEBUG_NAME = ´SeDebugPrivilege´;
  SE_AUDIT_NAME = ´SeAuditPrivilege´;
  SE_SYSTEM_ENVIRONMENT_NAME = ´SeSystemEnvironmentPrivilege´;
  SE_CHANGE_NOTIFY_NAME = ´SeChangeNotifyPrivilege´;
  SE_REMOTE_SHUTDOWN_NAME = ´SeRemoteShutdownPrivilege´;
  SE_UNDOCK_NAME = ´SeUndockPrivilege´;
  SE_SYNC_AGENT_NAME = ´SeSyncAgentPrivilege´;
  SE_ENABLE_DELEGATION_NAME = ´SeEnableDelegationPrivilege´;
  SE_MANAGE_VOLUME_NAME = ´SeManageVolumePrivilege´;

function NTSetPrivilege(sPrivilege: string; bEnabled: Boolean): Boolean;
var
  hToken: THandle;
  TokenPriv: TOKEN_PRIVILEGES;
  PrevTokenPriv: TOKEN_PRIVILEGES;
  ReturnLength: Cardinal;
begin
  Result := True;
  // Only for Windows NT/2000/XP and later.
  if not (Win32Platform = VER_PLATFORM_WIN32_NT) then Exit;
  Result := False;

  // obtain the processes token
  if OpenProcessToken(GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
  begin
    try
      // Get the locally unique identifier (LUID) .
      if LookupPrivilegeValue(nil, PChar(sPrivilege),
        TokenPriv.Privileges[0].Luid) then
      begin
        TokenPriv.PrivilegeCount := 1; // one privilege to set

        case bEnabled of
          True: TokenPriv.Privileges[0].Attributes  := SE_PRIVILEGE_ENABLED;
          False: TokenPriv.Privileges[0].Attributes := 0;
        end;

        ReturnLength := 0; // replaces a var parameter
        PrevTokenPriv := TokenPriv;

        // enable or disable the privilege

        AdjustTokenPrivileges(hToken, False, TokenPriv, SizeOf(PrevTokenPriv),
          PrevTokenPriv, ReturnLength);
      end;
    finally
      CloseHandle(hToken);
    end;
  end;
  // test the return value of AdjustTokenPrivileges.
  Result := GetLastError = ERROR_SUCCESS;
  if not Result then
    raise Exception.Create(SysErrorMessage(GetLastError));
end;


Abraços e Bons Códigos ;)


Paulocesar1301

Paulocesar1301

Curtidas 0

Respostas

Paulocesar1301

Paulocesar1301

04/07/2006

Desculpe a insistência, mas ...

:wink: sobe :wink:


GOSTEI 0
Paulocesar1301

Paulocesar1301

04/07/2006

Sempre persistente

:wink: sobe :wink:


GOSTEI 0
POSTAR