Да легко, просто понять на какой кусочек агрится антивирус и немного модифицировать его. Я в своё время на делфях написал маленькую утилитку которая заменяет в реестре путь для принтеров и перезапускает спулер. Дак на неё ругался антивирус. Просто перекомпиляция этого же проекта в чуть более старой версии делфей не вызывала нареканий у антивируса.
procedure TForm1.RunReplace;
var
reg :TExRegistry;
strs, Strings :TStringList;
i, bufLen :integer;
sNew, sOld, sPath, sPrinter, Params, CmdLine, Process :string;
ReplacedCount :integer;
KeyDataType :integer;
si: TStartupInfo;
pi: TProcessInformation;
begin
Memo1.Clear;
ReplacedCount := 0;
reg := TExRegistry.Create;
strs := TStringList.Create;
strings := TStringList.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.Access := KEY_ALL_ACCESS;
sPath := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports';
if reg.OpenKey(sPath, false) then
begin
//reg.GetKeyNames(strs);
reg.GetValueNames(strs);
for i := 0 to strs.Count - 1 do
begin
sOld := strs[i];
sNew := sOld;
if ReplaceSrv1Str(sNew) then
begin
ReplacedCount := ReplacedCount + 1;
reg.RenameValue(sOld, sNew);
Memo1.Lines.Add(sPath + ' ' + sNew);
end;
end;
reg.CloseKey;
end;
sPath := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers';
if reg.OpenKey(sPath, false) then
begin
reg.GetKeyNames(strs);
reg.CloseKey;
for i := 0 to strs.Count - 1 do
begin
sPrinter := strs[i];
sPath := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\' + sPrinter;
if reg.OpenKey(sPath, false) then
begin
sOld := reg.ReadString('Port');
sNew := sOld;
if ReplaceSrv1Str(sNew) then
begin
ReplacedCount := ReplacedCount + 1;
reg.WriteString('Port', sNew);
Memo1.Lines.Add(sPath + ' Port = ' + sNew);
end;
reg.CloseKey;
sPath := sPath + '\DsSpooler';
if reg.OpenKey(sPath, false) then
begin
reg.ReadStringList('portName', strings);
if Strings.Count > 0 then sOld := Strings[0] else sOld := '';
sNew := sOld;
if ReplaceSrv1Str(sNew) then
begin
ReplacedCount := ReplacedCount + 1;
Strings[0] := sNew;
reg.WriteStringList('portName', Strings);
Memo1.Lines.Add(sPath + ' portName = ' + sNew);
end;
reg.CloseKey;
end;
end;
end;
end;
ZeroMemory(@si, SizeOf(si));
si.cb := SizeOf(si);
Process := 'c:\Windows\System32\net.exe';
Params := 'stop Spooler';
CmdLine := Format('"%s" %s', [Process, Params]);
CreateProcess(PChar(Process), PChar(CmdLine) ,nil, nil,false, 0, nil,nil,si,pi);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
ZeroMemory(@si, SizeOf(si));
si.cb := SizeOf(si);
Process := 'c:\Windows\System32\net.exe';
Params := 'start spooler';
CmdLine := Format('"%s" %s', [Process, Params]);
CreateProcess(PChar(Process), PChar(CmdLine) ,nil, nil,false, 0, nil,nil,si,pi);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
Memo1.Lines.Add('Выполнено '+IntToStr(ReplacedCount)+' замен');
end;
На ютубе у Юрия Ткачёва есть очень хорошее обьяснение как оно там внутри работает - "Квантовый компьютер: что это такое и зачем он нужен?"
Смотря что за данные, потому что блокировки, нехватка места под rollback сегмент и прочее.
В oracle используется для join Вероятностный bloom filter
И approx_count_distinct думаю на схожих принципах работает.
Нет такого требования, по крайней мере в большинстве основных СУБД.
Я так понимаю APPROX_COUNT_DISTINCT в Oracle построен на этом.
Sony то же обновляются.
Да легко, просто понять на какой кусочек агрится антивирус и немного модифицировать его. Я в своё время на делфях написал маленькую утилитку которая заменяет в реестре путь для принтеров и перезапускает спулер. Дак на неё ругался антивирус. Просто перекомпиляция этого же проекта в чуть более старой версии делфей не вызывала нареканий у антивируса.
Нужен доводчик, как в авто.
Посмотрите "ВСЁ НЕ ТАК С ВАЛВ" от Морфа.