![]() |
systemwiederherstellungspunkt setzen
Hallo,
ich wollte mal fragen, ob es bei delphi eine funktion gibt, einen wiederherstellungspunkt zu setzen (wie bei manchen installionen) MFG Die Bremse |
Re: systemwiederherstellungspunkt setzen
Bei Delphi bestimmt nicht. Aber mit der Windows-API wahrscheinlich. Und ich meine, wir hatten das Thema hier schon mal.
|
Re: systemwiederherstellungspunkt setzen
Ich hab vor langer Zeit mal dies geschrieben:
1. Methode: Mit dem Microsoft Scripting Control: Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sr: OLEVAriant; begin ScriptControl1.Language := 'VBScript'; sr := ScriptControl1.Eval('getobject("winmgmts:\\.\root\default:Systemrestore")'); if sr.CreateRestorePoint('Automatic Restore Point', 0, 100) = 0 then ShowMessage('New Restore Point successfully created.') // Wiederherstellungspunkt erfolgreich erstellt else ShowMessage('Restore Point creation Failed!'); // Wiederherstellungspunkt Erstellung fehlgeschlagen. end; 2. Methode: Mit SRSetRestorePoint API from SrClient.dll:
Delphi-Quellcode:
// Translation from SRRestorePtAPI.h
const // Type of Event BEGIN_SYSTEM_CHANGE = 100; END_SYSTEM_CHANGE = 101; // Type of Restore Points APPLICATION_INSTALL = 0; CANCELLED_OPERATION = 13; MAX_DESC = 64; MIN_EVENT = 100; // Restore point information type PRESTOREPTINFOA = ^_RESTOREPTINFOA; _RESTOREPTINFOA = packed record dwEventType: DWORD; // Type of Event - Begin or End dwRestorePtType: DWORD; // Type of Restore Point - App install/uninstall llSequenceNumber: INT64; // Sequence Number - 0 for begin szDescription: array [0..MAX_DESC] of CHAR; // Description - Name of Application / Operation end; RESTOREPOINTINFO = _RESTOREPTINFOA; PRESTOREPOINTINFOA = ^_RESTOREPTINFOA; // Status returned by System Restore PSMGRSTATUS = ^_SMGRSTATUS; _SMGRSTATUS = packed record nStatus: DWORD; // Status returned by State Manager Process llSequenceNumber: INT64; // Sequence Number for the restore point end; STATEMGRSTATUS = _SMGRSTATUS; PSTATEMGRSTATUS = ^_SMGRSTATUS; function SRSetRestorePointA(pRestorePtSpec: PRESTOREPOINTINFOA; pSMgrStatus: PSTATEMGRSTATUS): Bool; stdcall; external 'SrClient.dll' Name 'SRSetRestorePointA'; // Example how to create and cancel a previous restore point. // Ref: [url]http://tinyurl.com/78pv[/url] procedure TForm1.Button1Click(Sender: TObject); const CR = #13#10; var RestorePtSpec: RESTOREPOINTINFO; SMgrStatus: STATEMGRSTATUS; begin // Initialize the RESTOREPOINTINFO structure RestorePtSpec.dwEventType := BEGIN_SYSTEM_CHANGE; RestorePtSpec.dwRestorePtType := APPLICATION_INSTALL; RestorePtSpec.llSequenceNumber := 0; RestorePtSpec.szDescription := 'SAMPLE RESTORE POINT'; if (SRSetRestorePointA(@RestorePtSpec, @SMgrStatus)) then begin ShowMessage('Restore point set. Restore point data:' + CR+ 'Sequence Number: ' + Format('%d', [SMgrStatus.llSequenceNumber]) + CR+ 'Status: ' + Format('%u', [SMgrStatus.nStatus])); // Restore Point Spec to cancel the previous restore point. RestorePtSpec.dwEventType := END_SYSTEM_CHANGE; RestorePtSpec.dwRestorePtType := CANCELLED_OPERATION; RestorePtSpec.llSequenceNumber := SMgrStatus.llSequenceNumber; // This is the sequence number returned by the previous call. // Canceling the previous restore point if (SRSetRestorePointA(@RestorePtSpec, @SMgrStatus)) then ShowMessage('Restore point canceled. Restore point data:' + CR+ 'Sequence Number: ' + Format('%d', [SMgrStatus.llSequenceNumber]) + CR+ 'Status: ' + Format('%u', [SMgrStatus.nStatus])) else ShowMessage('Couldn''t cancel restore point.'); end else ShowMessage('Couldn''t set restore point.'); end; end; |
Re: systemwiederherstellungspunkt setzen
thx
|
Re: systemwiederherstellungspunkt setzen
Ehm noch eine frage:
kann man den aktuellen status des forgangs ermitteln? also ich hab vor noch einen statusbalken mit reinzubauen... |
Re: systemwiederherstellungspunkt setzen
Zitat:
Das würde mich auch mal interessieren! |
Re: systemwiederherstellungspunkt setzen
Da man bei SRSetRestorePointA keine Callback Funktion angeben kann, wird diese Funktion wohl keinen Status, wie weit sie ist, zurückgeben.
|
Re: systemwiederherstellungspunkt setzen
Hi,
kann mir mal jemand erklaeren wozu diese Zeilen dienen? Wuerde ich im allgemeinen gerne verstehen um es beim naechsten mal selbst zu machen.
Delphi-Quellcode:
Und dann hier nochmal aber irgendwie anders aussehend:
type
PRESTOREPTINFOA = ^_RESTOREPTINFOA; _RESTOREPTINFOA = packed record
Delphi-Quellcode:
Ich verstehe das einfach nicht wirklich und wuerde es aber gerne verstehen.
RESTOREPOINTINFO = _RESTOREPTINFOA;
PRESTOREPOINTINFOA = ^_RESTOREPTINFOA; Danke! |
Re: systemwiederherstellungspunkt setzen
Zitat:
Muss das sein? |
Re: systemwiederherstellungspunkt setzen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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