[ VRKY @ 19.07.2004. 11:22 ] @
Trenutno pravim jedan cleaner nekog virusa... ali sam malo zastao... Želim kad se klikne start da program provjerava npr. u registriju ima li npr. ovaj ključ:
"HKCU\software\Vrky's\ i ako nađe prikaže se tekst na texstbox-u "Virus nađen" ili još bolje... da se taj texst prikaže u Msgboxu i da te pita hoćeš li ga ukloniti ili ne..
Može li mi ko tu pomoći... ali što jednoistavnije...
[ mladenovicz @ 19.07.2004. 11:39 ] @
Sa RegOpenKeyEx mozes da proveris da li kljuc postoji (vidi API Guide).

Kod za pitalicu:

Code:

    If MsgBox("Virus nadjen. Brisi?", vbYesNo + vbQuestion) = vbYes Then
        '-- brisi
    Else
        '-- ne brisi
    End If
[ VRKY @ 19.07.2004. 13:09 ] @
Može li to kako
Code:

if regkeyExist "HKCU\software\Vrky's\" Then
msgbox "Nađeno",vbcritical
End if 

A ako ne pomozite mi ode.. Kod je ok.. ali kad moram stavit otaj Key u regu koji treba tražit... To mi pravi probleme...

Evo cijeli kod... pa vi onda stavite npr. da traži ovaj gore navedeni ključ (HKCU\software\Vrky's\)

Code:

Const HKEY_CURRENT_USER = &H80000001
Const REG_OPTION_BACKUP_RESTORE = 4     ' open for backup or restore
Const REG_OPTION_VOLATILE = 1           ' Key is not preserved when system is rebooted
Const REG_OPTION_NON_VOLATILE = 0       ' Key is preserved when system is rebooted
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SYNCHRONIZE = &H100000
Const READ_CONTROL = &H20000
Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Const KEY_CREATE_LINK = &H20
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) _
And (Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = (KEY_READ)
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA"_
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, _
ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, _
phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
ByVal samDesired As Long, phkResult As Long) As Long
Private Sub Form_Load()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: [email protected]
    Dim Result As Long
    'Check if the specified key exists
    RegOpenKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, KEY_ALL_ACCESS, Result
    'If the key doesn't exist, we create it
    If Result = 0 Then
        'Create a new key
        RegCreateKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, "REG_DWORD", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, Result, Ret
        If Result = 0 Then
            MsgBox "Error while creating the Key!!"
            Exit Sub
        End If
    End If
    'Delete the key
    RegDeleteKey Result, ""
    'close the handle
    RegCloseKey Result
End Sub

[ mladenovicz @ 19.07.2004. 13:19 ] @
Pa sam si postovao kod za proveru postojanja kljuca

Code:

    'Check if the specified key exists
    RegOpenKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, KEY_ALL_ACCESS, Result
    'If the key doesn't exist, we create it
    If Result = 0 Then


ako je Result <> 0 kljuc postoji i onda ide msgbox sa pitanjem.

Mozes da napravis svoju funkciju RegistryKeyExists u kojoj treba da:
1. otvoris key sa RegOpenKeyEx 
2. pokupis rezultat koji treba da se vrati RegistryKeyExists = (Result <> 0)
3. zatvoris kljuc sa RegCloseKey

P.S.
Ajde sledeci put prelomi kod sa _, a ne da postujes kod koji je sirok tri ekrana.
[ VRKY @ 20.07.2004. 06:52 ] @
Ma znam da sam ja postovao taj kod... NEgo ne kužim kako mogu stvait da traži npr. ovaj ključ HKCU\software\Vrky's\ tu mi je problem....
[ mladenovicz @ 20.07.2004. 09:50 ] @
Kontam. Pogledaj ovu temu
[ VRKY @ 20.07.2004. 11:12 ] @
Hvala... Kako bi mogao izbrisat ovaj ključ od startup-a

Set Reg = CreateObject("wscript.shell")
Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe"
[ mladenovicz @ 20.07.2004. 11:31 ] @
Pa postovao si kod i za to

Code:

RegDeleteKey Result


Znaci, prvo otvoris key sa RegOpenKeyEx, vidis da li postoji i ako postoji brises ga. Za ovo ce ti trebati

Code:

Const HKEY_LOCAL_MACHINE = &H80000002
[ VRKY @ 20.07.2004. 12:06 ] @
Aj ti meni postuj cijeli kod jer ja to ne razumim
[ VRKY @ 21.07.2004. 07:38 ] @
Sad sam skužio sve... ali ne štima baš nešto uvjek mi prikazuje da taj ključ ne postoji a ja sam ga sam napravio i znam da postoji...Ključ je sljedeći "HKCU\software\Worm\" a ostali kod je isti ko u API - Ju Di griješim?:

Code:

 Dim Result As Long
    RegOpenKeyEx HKEY_CURRENT_USER, "Worm", 0, KEY_ALL_ACCESS, Result
    If Result = 0 Then
     MsgBox "Virus not found!", vbInformation, "Information"
        If Result = 1 Then
            MsgBox "Virus found!", vbInformation, "Information"
            Exit Sub
        End If
    End If
    RegDeleteKey Result, ""
    RegCloseKey Result
[ mladenovicz @ 21.07.2004. 09:13 ] @
HKCU\software\Worm\

Code:

RegOpenKeyEx HKEY_CURRENT_USER, "Worm"


Vidis da ti nesto fali?

Ako ti ovo ne pomogne, pretrazi ovaj forum sa RegOpenKeyEx i sve ce ti se samo kasti.
[ VRKY @ 21.07.2004. 10:30 ] @
Pa pogledaj da malo bolje... Ja ne vidim niš da mi fali...
Ako misliš na ovo
Code:

HKCU\software\Worm\

To je isto koda bi bilo
Code:

HKEY_CURRENT_USER\software\Worm\


ako misliš na nešto drugo reci....
[ markom @ 21.07.2004. 10:49 ] @
Code:
RegOpenKeyEx HKEY_CURRENT_USER, "Worm", 0, KEY_ALL_ACCESS, Result


nije isto što i:

Code:
RegOpenKeyEx HKEY_CURRENT_USER, "Software\Worm", 0, KEY_ALL_ACCESS, Result


koliko mene znanje i sreća junačka služe.

Marko.
[ VRKY @ 21.07.2004. 11:32 ] @
U čemu tu griješim... jer mi stvano pokazuje da je virus nađen a ja izbrišem sam taj ključ i on opet govori da je nađen... nešto ne štima...

Code:

 Dim Result As Long
  RegOpenKeyEx HKEY_CURRENT_USER, "Software\Worm", 0, KEY_ALL_ACCESS, Result
    If Result = 0 Then
     MsgBox "Virus  found!", vbInformation, "Information"
        If Result = 1 Then
            MsgBox "Virus not found!", vbInformation, "Information"
            Exit Sub
        End If
    End If
    RegDeleteKey Result, ""
    RegCloseKey Result
[ mladenovicz @ 21.07.2004. 11:40 ] @
Pa ovi IFovi ti nista ne valjaju. If Result=1 ce se proveravati samo ako je Result=0 i nikad se nece izvrsiti. Osim toga, kod za brisanje kljuca se poziva uvek, bez obzira da li kljuc postoji ili ne.

Code:

Dim Result As Long

    '-- otvori kljuc
    RegOpenKeyEx HKEY_CURRENT_USER, "Software\Worm", 0, KEY_ALL_ACCESS, Result
    
    If Result = 0 Then
        '-- kljuc postoji
        MsgBox "Virus  found!", vbInformation, "Information"
        '-- brisi kljuc
        RegDeleteKey Result, ""
    Else '--Result <>0, kljuc ne postoji
        MsgBox "Virus not found!", vbInformation, "Information"
    End If
    
    '-- zatvori kljuc
    RegCloseKey Result



[Ovu poruku je menjao mladenovicz dana 21.07.2004. u 13:43 GMT]
[ markom @ 21.07.2004. 11:41 ] @
A koja je vrednost u samom Registryju?

Marko.
[ VRKY @ 21.07.2004. 11:54 ] @
Ma tu opet nešto ne štima... Evo ja sad stvaljam svoju formu u uploda pa ispravi pogreške... Jer tu stvarno nešto ne štima... Jer ja napravim taj ključ.. i pokrenem kod i ono piše da nema virusa odem u reg na to mjesto i ključ je tamo... a ono mi je reklo da nije....
[ markom @ 21.07.2004. 11:59 ] @
Ma ja ne pričam taj VB. Samo common sense...

Marko.
[ mladenovicz @ 21.07.2004. 12:02 ] @
Tek sad videh da If nije dobar. Result =0 kad nema keya

Code:

 Dim Result As Long

    '-- otvori kljuc
    RegOpenKeyEx HKEY_CURRENT_USER, "Software\Worm", 0, KEY_ALL_ACCESS, Result
    
    If Result = 0 Then
        '-- kljuc ne postoji
        MsgBox "Virus not found!", vbInformation, "Information"
    Else
        '-- kljuc postoji
        MsgBox "Virus  found!", vbInformation, "Information"
        '-- brisi kljuc
        RegDeleteKey Result, ""
    End If
    
    '-- zatvori kljuc
    RegCloseKey Result
[ VRKY @ 21.07.2004. 12:09 ] @
E Hvala sad radi ko suza.....
[ VRKY @ 21.07.2004. 12:32 ] @
E sad još ovo... kako mogu izbrisat ovaj stratup... Jer on dobiva ime po .exe fajlu u kojem se nalazi....

Code:

"HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe"