Thema: Delphi shutdown!

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23

Re: shutdown!

  Alt 27. Apr 2005, 19:54
Zitat von Jens Schumann:
Hallo Luckie,
wie sieht es aus? Bekommen wie den denkbar besten Code noch zu sehen?
gemach, gemach.

Was mich an dem Code von Gardian Knot stört, ist das jegliche Rückgabewerte auf das sträflichste missachtet wurden. Da ist selbst der Code, der auf der ersten Seite gepostet wurde noch besser.

Delphi-Quellcode:
function EnablePrivilege(const Privilege: string; fEnable: Boolean; out
  PreviousState: Boolean): DWORD;
var
  Token : THandle;
  NewState : TTokenPrivileges;
  Luid : TLargeInteger;
  PrevState : TTokenPrivileges;
  Return : DWORD;
begin
  PreviousState := True;
  if (GetVersion() > $80000000) then
    // Win9x
    Result := ERROR_SUCCESS
  else
  begin
    // WinNT
    if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then
      Result := GetLastError()
    else
    try
      if not LookupPrivilegeValue(nil, PChar(Privilege), Luid) then
        Result := GetLastError()
      else
      begin
        NewState.PrivilegeCount := 1;
        NewState.Privileges[0].Luid := Luid;
        if fEnable then
          NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
        else
          NewState.Privileges[0].Attributes := 0;
        if not AdjustTokenPrivileges(Token, False, NewState,
          SizeOf(TTokenPrivileges), PrevState, Return) then
          Result := GetLastError()
        else
        begin
          Result := ERROR_SUCCESS;
          PreviousState :=
            (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0);
        end;
      end;
    finally
      CloseHandle(Token);
    end;
  end;
end;
Das ist meine Funktion, um das Privileg zu aktivieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat