AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Prüfen, ob RegistryKey vorhanden ist?
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen, ob RegistryKey vorhanden ist?

Ein Thema von Jamah · begonnen am 1. Mai 2010 · letzter Beitrag vom 3. Mai 2010
Antwort Antwort
Seite 2 von 4     12 34      
Andreas L.
(Gast)

n/a Beiträge
 
#11

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 12:13
Schon klar das in Name der Name der Form drinsteht. Ist schließlich nichts anderes wie Self.Name und Self ist eben die Form. Wo hast du x denn definiert? Global?
  Mit Zitat antworten Zitat
Jamah

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

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 12:24
Warum denn?
Steht doch drin: Name:= ('HKEY_Current_User.......');

Ja x ist global definiert.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 12:43
Zitat von Jamah:
Warum denn?
Steht doch drin: Name:= ('HKEY_Current_User.......');

Ja x ist global definiert.
Er wollte dir damit sagen, dass du mit dem oben geposteten nicht den Reg.Name änderst, sondern den der Form..

Wenn du es soc machen willst, musst du mit
Delphi-Quellcode:
with reg do begin
  //...
end;
arbeiten.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Jamah

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

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 12:49
Ok. funktioniert jetzt beides.
Letztes Manko:
Wenn ich den Schlüssel mit dem Value: KeyName in HKEY_Current_User hab, gehts, und er liefert den richtigen Wert zurück.
Wenn ich den Schlüssel aber in HKEY_Local_Machine (also ein x-wert 1 rauskommen müsste,) kommt nix raus. Findet entweder den Value nicht oder geht garnicht erst in die Schleife.
Das verstehe ich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 12:51
Existiert er dort denn??
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 13:31
Kann es sein, dass die ganzen Ratschläge von oben wieder über Bord geworfen wurden? Ich versuch es mal aus der hohlen Hand:
Delphi-Quellcode:
function RegCheck():Boolean;
begin
  result:= false;
  reg:= TRegistry.Create(KEY_READ); //nur zum Lesen öffnen <-- fehlte
  try
    reg.RootKey:= HKEY_Local_Machine;
    if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',false) then
      try
        if reg.ValueExists('KeyName') then
          begin
            Name:= ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName');
            result:= True;
            x:= 1;
          end;
      finally
        Reg.CloseKey; //das hab ich in den oberen Codes komplett vermisst
      end;
    reg.RootKey:= HKEY_Current_User;
    if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then
     try
       if reg.ValueExists('KeyName') then
          begin
            Name:= ('HKEY_Current_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName');
            result:= True;
            x:= 2;
          end;
     finally
       Reg.CloseKey; //s.o.
     end;
  finally
     reg.Free;
  end;
end;
Außerdem würde ich nicht auf globale Variablen zugreifen wollen, sondern x und Name eher als var-Parameter übergeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jamah

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

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 20:12
100%ig.
Der ist da. Aber irgendwie bekomme ich die Rückgabe: Alles in Ordnung.
Soll eigentlich eine Art Removal Tool für einen bestimmten Virus werden. Einen Trojaner, der sich an einer Stelle mit einem bestimmten Value in die Registry schreibt, nämlich entweder in HKEY_Current_User oder in den Local_Machine. Pfad ist der Selbe.
Ich will nur den Key abfragen und dann in einem 2. Schritt bei existenz löschen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#18

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 20:15
Zitat von Jamah:
Soll eigentlich eine Art Removal Tool für einen bestimmten Virus werden. Einen Trojaner, der sich an einer Stelle mit einem bestimmten Value in die Registry schreibt, nämlich entweder in HKEY_Current_User oder in den Local_Machine. Pfad ist der Selbe.
Ich will nur den Key abfragen und dann in einem 2. Schritt bei existenz löschen.
Ist das Dein Ernst? Wenn ich mir einen Virus/Trojaner einfange, verlasse ich mich nicht darauf, dass nach dem Löschen div. Registrykeys alles wieder in Butter ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 20:39
Die Arbeit würd ich auch den Antiviren Tools überlassen

Glaub mir das ist sicherer
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
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, 20: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
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz