Как программно включить мониторинг восстановления системы для накопителя?
Я нашел код, который включает мониторинг восстановления системы, но он для C#, и мне нужно преобразовать его в Delphi. Вот код:
ManagementScope scope = new ManagementScope("\\\\localhost\\root\\default");
ManagementPath path = new ManagementPath("SystemRestore");
ObjectGetOptions options = new ObjectGetOptions();
ManagementClass process = new ManagementClass(scope, path, options);
ManagementBaseObject inParams = process.GetMethodParameters("Enable");
inParams["WaitTillEnabled"] = true;
inParams["Drive"] = osDrive;
ManagementBaseObject outParams = process.InvokeMethod("Enable", inParams, null);
Может ли кто-нибудь помочь мне преобразовать вышеуказанный код в Delphi?
1 ответ
Следующая функция возвращает True, если System Restore
мониторинг указанного диска был включен, в противном случае - False. Как вход ADrive
Параметр указывает полный путь диска, который будет отслеживаться. Если этот параметр является системным диском или пустой строкой, все диски будут отслеживаться. Эта функция не ожидает полного включения мониторинга, прежде чем вернуться. Вместо этого он возвращается сразу после запуска службы восстановления системы и драйвера фильтра:
function EnableSystemRestore(const ADrive: string): Boolean;
var
WbemObject: OleVariant;
WbemService: OleVariant;
WbemLocator: OleVariant;
begin;
Result := False;
try
WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
WbemService := WbemLocator.ConnectServer('localhost', 'root\DEFAULT');
WbemObject := WbemService.Get('SystemRestore');
Result := WbemObject.Enable(ADrive) = S_OK;
except
on E: EOleException do
ShowMessage(Format('EOleException %s %x', [E.Message, E.ErrorCode]));
on E: Exception do
ShowMessage(E.Classname + ':' + E.Message);
end;
end;
И использование:
procedure TForm1.Button1Click(Sender: TObject);
begin;
if not EnableSystemRestore('D:\') then
ShowMessage('Failed!')
else
ShowMessage('Succeeded!');
end;