[英]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.