Используя D5, я хотел бы иметь приложение, которое создает точку восстановления системы с описанием. Я нашел несколько бесплатных программ в Интернете, но они не работают с Win8, но работают с Win7.
Я нашел этот вопрос , что дало мне полпути к выполнению того, что мне нужно сделать, поскольку оно работает с Win8 при компиляции и запуске «От имени администратора».
Я также нашел страницу в MSDN, в которой описывается метод с использованием WScript и планировщика заданий, который требует примерно нужного количества времени для создания точки, а затем сообщает «создано», но при проверке списка точек восстановления системы в 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
CreateRestorePoint
возвращает0
, это означает, что точка восстановления была создана. Итак, как вы перечисляете существующие точки восстановления? 08.12.2013Get-ComputerRestorePoint
из экземпляра PowerShell с повышенными правами? 10.12.2013