Einzelnen Beitrag anzeigen

Jamah

Registriert seit: 2. Dez 2009
Ort: Nordhorn
74 Beiträge
 
RAD-Studio 2010 Arc
 
#20

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 19:46
Ob sowas sicher ist oder nicht lasst lieber meine Sorge sein. Ich bin mir sicher, dass es 100% funktionieren wird, da das Ding einfach schlecht programmiert ist und zumindest das letzte offizielle Build immer die gleichen Sachen benutzt. Dependencies löschen geht schon, die .exe an sich mit Taskkill und on Reboot auch. Einziges Problem ist, dass ich dne Registry-Eintrag beseitigt haben will, damit ich wirklich 100% sicher sein kann.

Ich glaube, dass wir hier nicht über den Sinn diskutieren sollten. Tatsache ist:
- Der Key ist existent (hat nix drinstehen nur den Value 'KeyName'
- Wenn der in CurrentUser abgelegt ist kann der gefunden und gelöscht werden, nur in HKEY_LOCAL_MACHINE findet der den nicht
- x: Integer und reg: TRegistry sind global definiert.


nochmal der aktuelle Code:
Delphi-Quellcode:
function RegCheck():Boolean;
begin
  result:= false;
  reg:= TRegistry.Create;
  try
    reg.RootKey:= HKEY_LOCAL_MACHINE;
    if reg.KeyExists('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\') then
      begin
        if reg.ValueExists('KeyName') then
          begin
            Names:= ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName');
            result:= True;
            x:= 1;
          end;
      end;
    reg.RootKey:= HKEY_Current_User;
    if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then
    begin
      if reg.ValueExists('KeyName') then
          begin
            Names:= ('HKEY_Current_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName');
            result:= True;
            x:= 2;
          end;
    end;
  finally
     reg.Free;
  end;
end;
Leider funktioniert dieser Code auch nicht, ich denke es ist der selbe Fehler, dieser Code sollte den Key löschen aber anscheinend geht er nicht in die Schleife ich weiß nicht warum. Dort steht dann nur Starting removal dependencies... und die procedure ist beendet.
Delphi-Quellcode:
  if Res1 = True then
      begin
        sMemo1.Lines.Add('Starting removal dependencies...');
        if x = 1 then
          begin
            reg:= Tregistry.Create;
            try
               reg.RootKey:= HKEY_Local_Machine;
               if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then
                 begin
                    sMemo1.Lines.Add('');
                    sMemo1.Lines.Add('Getting values...');
                    sMemo1.Lines.Add('Deleting trojan from registry...');
                    reg.DeleteValue('KeyName');
                    if reg.ValueExists('KeyName') then
                      begin
                        sMemo1.Lines.Add('');
                        sMemo1.Lines.Add('Failed to delete.');
                        sMemo1.Lines.Add('Maybe you have no admin rights?');
                        sMemo1.Lines.Add('You can also delete it manually using the ''''regedit''''command');
                        sMemo1.Lines.Add('');
                      end;
                 end;
              finally
               reg.Free;
            end;
      if x = 2 then
          begin
            reg:= Tregistry.Create;
            try
               reg.RootKey:= HKEY_Current_User;
               if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then
                 begin
                    sMemo1.Lines.Add('');
                    sMemo1.Lines.Add('Getting values...');
                    sMemo1.Lines.Add('Deleting trojan from registry...');
                    reg.DeleteValue('KeyName');
                    if reg.ValueExists('KeyName') then
                      begin
                        sMemo1.Lines.Add('');
                        sMemo1.Lines.Add('Failed to delete.');
                        sMemo1.Lines.Add('Maybe you have no admin rights?');
                        sMemo1.Lines.Add('You can also delete it manually using the ''''regedit''''command');
                        sMemo1.Lines.Add('');
                      end;
                 end;
            finally
              reg.Free;
            end;
          end;
Danke für euer Verständnis und eure Hilfe
  Mit Zitat antworten Zitat