Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Windows herunterfahren ExitWin, und was ist mit VISTA? (https://www.delphipraxis.net/122634-windows-herunterfahren-exitwin-und-ist-mit-vista.html)

DelphiPeter 19. Okt 2008 18:13


Windows herunterfahren ExitWin, und was ist mit VISTA?
 
http://www.delphipraxis.net/internal...herunterfahren

Ich benutze diesen Tip um mein Windows herunterzufahren aber mit Vista geht das nicht, weiß jemand warum?

Peter

DGL-luke 19. Okt 2008 18:24

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Benutzt du auch den Code aus dem zweiten Beitrag?

DelphiPeter 19. Okt 2008 18:59

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Ja, funktioniert nur leider nicht :-(

Luckie 19. Okt 2008 19:49

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Zitat:

Zitat von DelphiPeter
Ja, funktioniert nur leider nicht :-(

Und was sagt GetLastError nach dem Aufruf?

DelphiPeter 23. Okt 2008 17:59

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Wie zeige ich den Fehler an mit GetLastError? Habe das noch nie benutzt?

Luckie 23. Okt 2008 20:53

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Zitat:

Zitat von DelphiPeter
Wie zeige ich den Fehler an mit GetLastError? Habe das noch nie benutzt?

Etwas Eigeninitiative bitte. Eine suche im Forum nach GetLasterror sollte dir genug Beispiele geben, wie man GetLastError verwendet. Oder man guckt mal in der Hilfe, dem Windows SDK, nach.

emsländer 23. Okt 2008 21:00

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Hi,

hiermit klappt das auch mit Vista (auch 64Bit):
Delphi-Quellcode:
function TFrmMain.MyExitWindows(RebootParam: Longword): Boolean;
var
  TTokenHd: THandle;
  TTokenPvg: TTokenPrivileges;
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;
  tpResult: Boolean;
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    tpResult := OpenProcessToken(GetCurrentProcess(),
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
      TTokenHd);
    if tpResult then
    begin
      tpResult := LookupPrivilegeValue(nil,
                                       SE_SHUTDOWN_NAME,
                                       TTokenPvg.Privileges[0].Luid);
      TTokenPvg.PrivilegeCount := 1;
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      cbtpPrevious := SizeOf(rTTokenPvg);
      pcbtpPreviousRequired := 0;
      if tpResult then
        Windows.AdjustTokenPrivileges(TTokenHd,
                                      False,
                                      TTokenPvg,
                                      cbtpPrevious,
                                      rTTokenPvg,
                                      pcbtpPreviousRequired);
    end;
  end;
  Result := ExitWindowsEx(RebootParam, 0);
end;
Aufruf:

Delphi-Quellcode:
procedure TFrmMain.Button2Click(Sender: TObject);
begin
  MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;
Gruss

EL

Luckie 23. Okt 2008 21:24

Re: Windows herunterfahren ExitWin, und was ist mit VISTA?
 
Genau der Code ist auch oben schon verlinkt worden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz