Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

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

Re: TShutDown komponente

  Alt 31. Okt 2004, 20:15
Schon mal Gedanken über den leeren else-Block gemacht?

Delphi-Quellcode:
procedure GetPrivileges; //Rechte um runterzufahren holen.
var
  vi : TOSVersionInfo;
  hToken : THandle;
  tp : TTokenPrivileges;
  h : DWord;
begin
  vi.dwOSVersionInfoSize := SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    // Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    h := 0;
    AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
    CloseHandle(hToken);
  end
  else // Windows 95
  begin
  end;
end;
Ich komme nicht umhin zu glauben, dass du das irgendwo zusammenkopiert hast. Denn diesen Kommentar:
Zitat:
// Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
Sieht man uch überall.

Ich habe noch diesen Code auf der Paltte rumfliegen:
Delphi-Quellcode:
function ExitWin(flag: word): Boolean;
var
  vi : TOSVersionInfo;
  hToken : THandle;
  tp : TTokenPrivileges;
  h : DWord;

begin
  vi.dwOSVersionInfoSize := SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    h := 0;
    AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
    CloseHandle(hToken);
    result := ExitWindowsEx(flag, 0);
  end
  else // Windows 95
  begin
    Result := ExitWindowsEx(flag, 0);
  end;
end;
Den könnte man bestimmt auch noch verbessern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat