簡體   English   中英

如何在Win8中設置系統還原點

[英]How to set System Restore points in Win8

我希望使用D5創建一個帶有描述的系統還原點的應用程序。 我在網上找到了幾個免費贈品,但是它們不能與Win8一起使用,但是可以與Win7一起使用。

我發現了這個問題 ,因為它在編譯和運行“以管理員身份”時與Win8兼容,因此完成了我需要做的事情的一半。

我還在MSDN上找到了一個頁面,該頁面描述了使用WScript和Task Scheduler的方法,該方法花費適當的時間創建點,然后報告“已創建”,但是在檢查系統還原點列表時,Win8中沒有任何內容。 但是,該過程同樣可以在Win7中正常工作,並且可以正確顯示創建的點。

我也在VB和C中找到了這點 ,它們都無法轉換為Delphi版本5。

誰能指出一些可以使我完成該項目的代碼? 它是供我自己使用的,因此只要可以與Win8一起使用,它可能會有點粗糙且可以使用。

就像我在下面評論的那樣,這是我為幫助嘗試和診斷問題所做的工作。

program Project2;
{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj;

procedure  CreateRestorePoint(const Description : string);
const
  WbemUser            ='';
  WbemPassword        ='';
  WbemComputer        ='localhost';
  BEGIN_SYSTEM_CHANGE = 100;
  APPLICATION_INSTALL = 0;
var
  FSWbemLocator   : OLEVariant;
  FWMIService     : OLEVariant;
  FWbemObjectSet  : OLEVariant;
begin
  WriteLn('2a');
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WriteLn('2b');
  FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\DEFAULT', WbemUser, WbemPassword);
  WriteLn('2c');
  FWbemObjectSet:= FWMIService.Get('SystemRestore');
  WriteLn('2d');
  Writeln(FWbemObjectSet.CreateRestorePoint(Description, APPLICATION_INSTALL, BEGIN_SYSTEM_CHANGE));  //
  WriteLn('2e');
end;


begin
 try
    WriteLn('1');
    CoInitialize(nil);
    try
      WriteLn('2');
      CreateRestorePoint('Sample restore point');
    finally
      WriteLn('3');
      CoUninitialize;
    end;
 except
    on E:EOleException do
    begin
      WriteLn('4');
      Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    end;
    on E:Exception do
    begin
      WriteLn('5');
      Writeln(E.Classname, ':', E.Message);
    end;
  end;
 Writeln('Press Enter again to exit');
 Readln;
end.

這是它的輸出...

1
2
2a
2b
2c
2d
0
2e
3
Press Enter again to exit

您可以使用SystemRestore WMI類中的CreateRestorePoint

試試這個樣本

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj;

procedure  CreateRestorePoint(const Description : string);
const
  WbemUser            ='';
  WbemPassword        ='';
  WbemComputer        ='localhost';
  BEGIN_SYSTEM_CHANGE = 100;
  APPLICATION_INSTALL = 0;
var
  FSWbemLocator   : OLEVariant;
  FWMIService     : OLEVariant;
  FWbemObjectSet  : OLEVariant;
begin
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\DEFAULT', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.Get('SystemRestore');
  Writeln(FWbemObjectSet.CreateRestorePoint(Description, APPLICATION_INSTALL, BEGIN_SYSTEM_CHANGE));  //
end;


begin
 try
    CoInitialize(nil);
    try
      CreateRestorePoint('Sample restore point');
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
  end;
 Writeln('Press Enter to exit');
 Readln;
end.

注意:此代碼需要提升。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM