Einzelnen Beitrag anzeigen

Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#4

AW: Windows 10 und System Restore

  Alt 18. Mär 2017, 19:49
@t.roller

Der Code den du gepostet hast ist der meiner Methode 3 mit zwei Zeilen Unterschied (CoInitialize(nil); und CoUninitialize identisch. Ich habe den Code aus der gleichen Quelle wie du, aber die zwei Zeilen beim Schritt von 0.2 -> 0.3 rausgenommen, weil sie unter Win 10 keinen Unterschied machten (sind bei 0.4 wieder drin).

Zusätzlich, um ganz sicher zu gehen habe ich deinen Code ohne Änderungen kompiliert als CreateRestorePoint.exe und RestorePoint.exe. Unter Win 7 und Win 10 mit UAC aus getestet. Geht problemlos.

Danach die Win10 VM zurückgesetzt auf dem Stand kurz nach der Installation. Die beiden Exes hinkopiert und dann zwei Videos erstellt.

Video 1 (restore_delphi.mp4): https://www.dropbox.com/s/xn6n8bhlpt...elphi.mp4?dl=0

- cmd.exe wird mit Adminrechten geöffnet
- CreateRestorePoint.exe werkelt 5 Sekunden lang mit viel IO Aktivität, meldet dann eine 0
- RestorePoint.exe hängt, da es keinen Restorepunkt gibt
- Ich zeige dann noch in der Windows UI dass wirklich kein Punkt erstellt wurde

Video 2 (restore_manual.mp4): https://www.dropbox.com/s/iqu4nn9iz7...anual.mp4?dl=0

- in dem zweiten Video welches kurz danach erstellt wurde zeige ich dass mit Windows 10 Boardmitteln man problemlos einen Wiederherstellunbgspunkt erstellen kann und RestorePoint.exe diesen auch anzeigt
- Habe nach dem Video sofort wieder einen zweiten erstellt und das funktionierte auch (also kein 24h Limit bei den Boardmitteln)

Es funktioniert also leider vorne und hinten nicht.

Was mir aufgefallen ist dass die mit Boardmitteln erstellten Punkte immer vom Typ Manuell sind. Die von SystemRestoreTest erstellten vom Typ Installation. Vielleicht ist das der Schlüssel zum erfolgt. Ich habe deshalb dwRestorePtType geändert, BACKUP_RECOVERY, MODIFY_SETTINGS, und CHECKPOINT ändert die Sache aber von Installation auf System, nicht auf Manuell.

Angehängt: Die zwei Projekte mit Code von t.roller inkl vorkompilierten Exes, Version 0.4 von SystemRestoreTest mit diesen Änderungen:
Delphi-Quellcode:
initialization
  //CoInitializeEx(0, COINIT_MULTITHREADED);

  CoInitialize(nil);

finalization
  CoUninitialize;

@Der schöne Günther

Danke für die Info. Es ist ja merkwürdig dass es diese Einschränkung nicht gibt wenn man die Wiederherstellungspunkte unter Windows 7, oder unter Windows 10 mit UAC aus erstellt. Da gehen beliebig viele mit gleichen Code. Ich werde mehr danach googeln. Was auch sehr merkwürdig ist dass es öfters Marshalling Fehler gibt beim InitializeCOMSecurity(). Wenn so ein Fehler kommt startet man die App neu und danach ist er meistens nicht mehr da.
Angehängte Dateien
Dateityp: rar CreateRestorePoint.rar (48,4 KB, 13x aufgerufen)
Dateityp: rar RestorePoint.rar (47,2 KB, 11x aufgerufen)
Dateityp: rar SystemRestoreTest.rar (244,8 KB, 16x aufgerufen)

Geändert von Shark99 (19. Mär 2017 um 18:33 Uhr)
  Mit Zitat antworten Zitat