AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi MOVEFILE_DELAY_UNTIL_REBOOT: Ins löschen einklinken
Thema durchsuchen
Ansicht
Themen-Optionen

MOVEFILE_DELAY_UNTIL_REBOOT: Ins löschen einklinken

Ein Thema von DGL-luke · begonnen am 8. Apr 2007 · letzter Beitrag vom 16. Apr 2007
Antwort Antwort
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

Re: MOVEFILE_DELAY_UNTIL_REBOOT: Ins löschen einklinken

  Alt 12. Apr 2007, 02:23
Hallo DPler,

ich komme hier einfach nicht weiter.

Der Code gibt mir immer ein Access is Denied aus. Ich habe 8 Files hier auf einer 2. Platte die aus einer alten Windows Installation her stammen die ich gerne loeschen wuerde mit dem Tool. Jedoch wird nichts in die Registry geschrieben damit Windows die Files loeschen koennte.

Delphi-Quellcode:
procedure TfoMain.BtnGoClick(Sender: TObject);
var
  Errors, I: Integer;
  FileName, S: String;
  PrevState: Boolean;
  Priv: DWORD;
begin
  MemInfo.Lines.Clear;
  MemInfo.Lines.Add('Now storing information for file deleting at next systemstart'#13#10);

  Errors := 0;

  PBarDeletion.Max := LvwFiles.Items.Count;
  for I := 0 to LvwFiles.Items.Count - 1 do
  begin
    PBarDeletion.Position := I + 1;
    FileName := LvwFiles.Items[I].Caption;
    if ( not MoveFileEx(PChar(FileName), Nil, MOVEFILE_DELAY_UNTIL_REBOOT) ) then
    begin
       MemInfo.Lines.Add(LvwFiles.Items[I].Caption + ': ' + SysErrorMessage(GetLastError));
       Inc(Errors, 1);
    end;
  end;

  S := #13#10'Finished';
  Case Errors of
     0: ;
     1: AppendStr(S, ', ' + IntTostr(Errors) + ' Error');
     else
       AppendStr(s, ', ' + IntTostr(Errors) + ' Errors');
  end;
  MemInfo.Lines.Add(S);

  Priv := EnablePrivilege('SeShutDownPrivilege', True, PrevState);
  if ( Priv <> 0 ) then
  begin
    ShowMessage('Du hast nicht die Rechte, den PC neu zu starten');
    Exit;
  end;

  if ( MessageDlg('Do you want to reboot your machine now?', mtConfirmation, [mbYes, mbNo], 0) = mrYes ) then
  begin
    if ( not ExitWindowsEx(EWX_REBOOT or EWX_FORCEIFHUNG, 0) ) then
    begin
      ShowMessage(SysErrorMessage(GetLastError));
    end
    else
    begin
      EnablePrivilege('SeShutDownPrivilege', PrevState, PrevState);
    end;
  end;
end;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz