Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Was macht Runterfahren (https://www.delphipraxis.net/101887-macht-runterfahren.html)

SaFu 19. Okt 2007 17:02


Was macht Runterfahren
 
Hi leute

ich habe mich mal gefragt was dieser Code alles macht

Also das er den Rechner Runterfährt weis ich aber wie

Speichert er die Sachen auch oder schneidet er alles direkt ab dann wäre es ja nicht so gut und wenn er das macht gibt es ein code womit man den Rechner runterfahren kann und alles gespeichert wird Ohne irgenwelche abfragen???

Wäre net wenn mir das jemand beantworten würde

Delphi-Quellcode:
function TForm13.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;

DoktorD 19. Okt 2007 17:16

Re: Was macht Runterfahren
 
Ich hab das bis heute auch noch nicht verstanden. Es wäre mal interessat welche möglichkeiten es alle gibt.

Luckie 19. Okt 2007 17:18

Re: Was macht Runterfahren
 
Wird als Paramter EWX_FORCE mit übergeben, dann werden alle Programme rigoros beendet und Abfragen, ob noch gespeichert werden sollen werden verhindert, weil der Prozess einfach abgeschossen wird. Eine Anwendung kann dann auch da Runterfahren nicht mehr abbrechen.
Zitat:

Zitat von fuknersascha
gibt es ein code womit man den Rechner runterfahren kann und alles gespeichert wird Ohne irgenwelche abfragen???

Wie soll das gehen? Wenn du ein noch nicht abgespeichertes Dokument geöffnet hast, wo soll dann die Anwendung das abspeichern? Entweder das Runterfahren erzwingen und gegebenenfalls Datenverlust riskieren oder den Anwendungen die Möglichkeit geben auf das Runterfahren zu reagieren.

Alles weitere unter MSDN-Library durchsuchenExitWindowsEx.

Christian Seehase 19. Okt 2007 17:18

Re: Was macht Runterfahren
 
Moin Sascha,

ob der Rechner ohne weitere Rückfragen heruntergefahren wird, hängt davon ab, was Du der Funktion als Parameter übergibst.
(Siehe auch MSDN-Library durchsuchenExitWindowsEx)
Zu Datenverlust kann es immer kommen, da niemand vorhersagen kann, wie ein beliebiges Programm auf das Herunterfahren reagiert.
Ohne EWX_FORCE / EWX_FORCEIFHUNG werden die meisten Programme bei ungesicherten Daten wohl rückfragen, ob die Änderungen gespeichert werden sollen. Werden sie verwendet, wird kein Programm rückfragen können.

inherited 19. Okt 2007 17:24

Re: Was macht Runterfahren
 
Ruhezustand wäre, falls unterstützt, noch eine Möglichkeit.

DoktorD 19. Okt 2007 17:24

Re: Was macht Runterfahren
 
Das hatte ich auch schon oft probiert, aber irgendwie vergisst der Rechner dann herunterzufahren.
Habe das vor ein paar Tagen schon mal sowas ähliches gepostet und meine Frage ist immer noch offen.

Schaut bitte mal hier

DelphiPraxis.net Link

SaFu 19. Okt 2007 17:38

Re: Was macht Runterfahren
 
Also muss ich die eventuellen datenverluste wohl inkauf nehemen aber wie sieht es für das System aus.

Ist das schmertzhaft für das System??


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 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