Post Reply  Post Thread 
Pages (3): « First [1] 2 3 Next > Last »
Pisanje u registry bazu
Author Message
Len0
Redoviti posjetitelj
**


Posts: 242
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 2
Post: #1
Pisanje u registry bazu

Mogu li u C++ konzolnom programu da upisujem u registry, ako neko moze samo taj dio koda da mi objasni.


RTFM - Rich Text Format Manual
23-10-2007 01:49 PM
Find all posts by this user Quote this message in a reply
Puž
Redoviti posjetitelj
**


Posts: 131
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 24
Post: #2
RE: Pisanje u registry bazu

Zavisi koji IDE koristiš. Konzolne programe možeš kompajlirati u puno programa, od kojih svaki sadrži svoje specifične klase pomoću kojih moš npr. čitat i pisat registry.

Osobno znam baratat regisrtry-em samo preko CLR-a odnosno samo sa Visual Studiom 2005, pa ak ga imaš doma reci pa bum ti iskodiral nekaj.

23-10-2007 06:52 PM
Find all posts by this user Quote this message in a reply
Stazh
Redoviti posjetitelj
**


Posts: 84
Group: Registered
Joined: Mar 2006
Status: Offline
Reputation: 4
Post: #3
RE: Pisanje u registry bazu

Možeš iz VC 6.0 ako koristiš konzolnu aplikaciju MFC tipa, ali možeš i ako pišeš onu standardnog oblika, ali sam moraš dodavati headere i libove vezane uz SDK (u kojem imaš već definirane registry handling funkcije).

Kada to napraviš evo ti popis svih funkcija vezanih za registry:
http://msdn2.microsoft.com/en-us/library/ms724875.aspx

A kada dođeš do konkretnog problema postaj ovdje pa ćemo ti pomoći.


Pusti priče, uzmi Osječko!
"Programming is an art form that fights back"

This post was last modified: 24-10-2007 11:16 AM by Stazh.

24-10-2007 11:15 AM
Visit this user's website Find all posts by this user Quote this message in a reply
Len0
Redoviti posjetitelj
**


Posts: 242
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 2
Post: #4
RE: Pisanje u registry bazu

@Puž - Koristim Dev-C++, imam VC 6.0.
@Stazh - Trebam da napravim novi kljuc u HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows -> CurrentVersion -> Run.
Znaci hocu da program dizem sa sistemom ???

Ovo sam nasao na MSDN:

Code:
LONG WINAPI RegCreateKey(
  __in          HKEY hKey,
  __in          LPCTSTR lpSubKey,
  __out         PHKEY phkResult
);

Trazio sam create regkey, kako da ovdje navedem putanju do Run?


RTFM - Rich Text Format Manual
24-10-2007 03:10 PM
Find all posts by this user Quote this message in a reply
Stazh
Redoviti posjetitelj
**


Posts: 84
Group: Registered
Joined: Mar 2006
Status: Offline
Reputation: 4
Post: #5
RE: Pisanje u registry bazu

Len0 Wrote:
@Stazh - Trebam da napravim novi kljuc u HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows -> CurrentVersion -> Run.
Znaci hocu da program dizem sa sistemom ???

Ovo sam nasao na MSDN:

Code:
LONG WINAPI RegCreateKey(
  __in          HKEY hKey,
  __in          LPCTSTR lpSubKey,
  __out         PHKEY phkResult
);

Trazio sam create regkey, kako da ovdje navedem putanju do Run?


Evo ti ovdje odličan primjer kako se radi:
http://www.codersource.net/win32_registr...ons_2.html


Pusti priče, uzmi Osječko!
"Programming is an art form that fights back"
25-10-2007 06:49 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Puž
Redoviti posjetitelj
**


Posts: 131
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 24
Post: #6
RE: Pisanje u registry bazu

Evo sklepo sam ti nekaj za Dev-C++. Složil sam ti klasu pomoću koje moš preko konzole se igrat sa registry-em.

Code:
#include<windows.h>
#include<winreg.h>
#include<stdio.h>
/*
Baratanje sa registry-em preko "Dev-c++"-a radiš preko
funkcija <winreg.h> hedera.

Princip je slijedeći:

RegCreateKeyA   je funkcija kojom radiš "folder" u regisrtry-u,
RegOpenKeyA     prek njega u HKEY "varijablu" metneš "putanju", "lokaciju" il kaj već.
RegSetValueA    ti stavlja u prvu vrijednost (default) "value data", odnosno referencu.
RegSetValueExA  isti ko prije, sam kaj pomoću njega metneš iz varijable vrijednost u
                HKEY "varijablu", te moš bilo koju vrijednost modificirat, ne sam (default)
RegQueryValueEx pokupiš vrijednost "value data" u varijablu
RegDeleteKeyA   brišeš ključ

Proući kak rade funkcije, nije niš teško, sam kaj je živciratno u 3 piz... materine...
*/
class onaj_koji_mrzi_registre
{
      public:

      HKEY zli_kljuc;    
      DWORD naziv_vejlu;

      TCHAR vejlu_data_str[20];
      long *vejlu_data_long;
      
      void napravi_kljuc(char*);          
      void uloudaj_kljuc(char *);  
      void uloudaj_vrijednost_kljuca(char *);      
      void ukucaj_vrijednost_defaulta(char *, char*);    
      void ukucaj_novu_vrijednost(char*, int);          
      void obrisi_kljuc();      
};
///////////////////////////////////////////////////////////////////////////////////////////////////////
void onaj_koji_mrzi_registre::napravi_kljuc(char naziv_kljuca[50])
{
     RegCreateKeyA(HKEY_CURRENT_USER,naziv_kljuca,(PHKEY)&zli_kljuc);
}
void onaj_koji_mrzi_registre::uloudaj_kljuc(char naziv_kljuca[50])
{
    RegOpenKeyA(HKEY_CURRENT_USER,naziv_kljuca,(PHKEY)&zli_kljuc);
}
void onaj_koji_mrzi_registre::ukucaj_vrijednost_defaulta(char naziv_kljuca[50], char naziv_vrijednosti_data[50])
{
    RegSetValueA(HKEY_CURRENT_USER, naziv_kljuca, REG_SZ, naziv_vrijednosti_data,0);
}
void onaj_koji_mrzi_registre::ukucaj_novu_vrijednost(char naziv_vrijednosti[50], int vrijednost_data)
{
    naziv_vejlu=vrijednost_data;
    RegSetValueExA(zli_kljuc, naziv_vrijednosti , 0, REG_DWORD, (LPBYTE)&naziv_vejlu, sizeof(DWORD) );
}
void onaj_koji_mrzi_registre::uloudaj_vrijednost_kljuca(char naziv_vrijednosti[50])
{  
    RegQueryValueEx(zli_kljuc, naziv_vrijednosti, NULL, NULL, (LPBYTE)&vejlu_data_long, &naziv_vejlu);    
}
void onaj_koji_mrzi_registre::obrisi_kljuc()
{
    //brisanje po stringu
    //RegDeleteKeyA(HKEY_CURRENT_USER,"PRVI");
    
    //brsianje po ključu
    RegDeleteKeyA(zli_kljuc,"");
}  
///////////////////////////////////////////////////////////////////////////////////////////////////////
int main() {  
    
    ////////////////////////////////////////////////////////////////////////
    // Tu sam ti pobacl neke vrijednosti koje bu program ubacil u registry
    char kljuc_ime[50]="PRVI\\DRUGI\\TRECI";
    char kljuc_vrijednost[50]="VRIJEDNOST";
    char kljuc_vrijednost_data_str[50]="HE he he";
    int kljuc_vrijednost_data_int=513;
    ////////////////////////////////////////////////////////////////////////

    onaj_koji_mrzi_registre konan;      
    
    konan.napravi_kljuc(kljuc_ime);
    konan.uloudaj_kljuc(kljuc_ime);      
    konan.ukucaj_vrijednost_defaulta(kljuc_ime, kljuc_vrijednost_data_str);    
    konan.ukucaj_novu_vrijednost(kljuc_vrijednost, kljuc_vrijednost_data_int);
    konan.uloudaj_vrijednost_kljuca(kljuc_ime);
    //konan.obrisi_kljuc();    

    printf("Uzeta vrijednost ->%d",konan.naziv_vejlu);    
    
    getchar();
    getchar();
    
    return 0;
}

26-10-2007 06:34 PM
Find all posts by this user Quote this message in a reply
Len0
Redoviti posjetitelj
**


Posts: 242
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 2
Post: #7
RE: Pisanje u registry bazu

Proucit cu, mislim da jos treba da ucim prije nego sto ovakva pitanja budem postavljao.
Dobar

Code:
HKEY hKey;
       DWORD dwDisp = 0;
       LPDWORD lpdwDisp = &dwDisp;
       CString l_strExampleKey = "SOFTWARE\\TestKey";

       LONG iSuccess = RegCreateKeyEx( HKEY_CURRENT_USER, l_strExampleKey, 0L,NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,lpdwDisp);

       if(iSuccess == ERROR_SUCCESS)
       {
            RegCloseKey(hKey);
       }

U ovom kodu mi javlja gresku u cetvrtoj liniji, da li nesto treba ukljuciti ili definisati???


RTFM - Rich Text Format Manual

This post was last modified: 27-10-2007 11:35 PM by Len0.

27-10-2007 11:27 PM
Find all posts by this user Quote this message in a reply
Puž
Redoviti posjetitelj
**


Posts: 131
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 24
Post: #8
RE: Pisanje u registry bazu

Sa kojime kompajlerom ga dižeš i kaj ti veli?
Ovak na slijepo mi je čudan CString tip. Možda te zajebava zbog toga. Hmmm

Zamjeni

Code:
CString l_strExampleKey = "SOFTWARE\TestKey";

sa

Code:
char l_strExampleKey[50] = "SOFTWARE\\\TestKey"; //pazi ima dva "\\\" sad


Edit
////////////////////////////////////////////////////////////////////
Ak ti nije valjal moj kod znam gdje te zajebava.

Kad copy-paste-am kod u ovaj replay textbox foruma, gad mi registrira dva "\" znaka ("\\") kao jedan... Tak da ovo nevalja kaj piše kod mog koda

Code:
PRVI\DRUGI\TRECI

Treba bit

Code:
PRVI\\\DRUGI\\\TRECI

This post was last modified: 28-10-2007 12:12 AM by Puž.

28-10-2007 12:03 AM
Find all posts by this user Quote this message in a reply
Len0
Redoviti posjetitelj
**


Posts: 242
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 2
Post: #9
RE: Pisanje u registry bazu

Hvala, sada radi ali kljuc nema nikakvu vrjednost.
Kako da stavim neku vrijednost kljucu koji sam napravio???


RTFM - Rich Text Format Manual
28-10-2007 11:37 AM
Find all posts by this user Quote this message in a reply
Puž
Redoviti posjetitelj
**


Posts: 131
Group: Registered
Joined: Mar 2007
Status: Offline
Reputation: 24
Post: #10
RE: Pisanje u registry bazu

Na koju vrijednost misliš? U regedit-u imaš "Value" stvari (one kaj ti se prikazuju u desnom frejmu), od kojih svaka ima svoj "Value Data". Sad neznam na koju vrijednost misliš točno. Hmmm

Budući da pitaš

Quote:
Kako da stavim neku vrijednost kljucu koji sam napravio???

Pretpostaviti ću da misliš na "Value Data" "(Default)" "Value"-a.

Code:
    HKEY hKey;
    DWORD dwDisp = 0;
    LPDWORD lpdwDisp = &dwDisp;
      
    char l_strExampleKey[50] = "SOFTWARE\\TestKey";
    char vrijednost[20]="Evo me";

    RegCreateKeyEx(HKEY_CURRENT_USER,  l_strExampleKey, 0L,NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,lpdwDisp);
    RegSetValueA(HKEY_CURRENT_USER, l_strExampleKey, REG_SZ, vrijednost,0);

28-10-2007 02:36 PM
Find all posts by this user Quote this message in a reply
Pages (3): « First [1] 2 3 Next > Last »
Post Reply  Post Thread 

View a Printable Version
Send this Thread to a Friend
Subscribe to this Thread | Add Thread to Favorites

Forum Jump: