|
Pisanje u registry bazu
|
| Author |
Message |
Len0
Redoviti posjetitelj
 
Posts: 242
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 2
|
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 |
|
 |
Puž
Redoviti posjetitelj
 
Posts: 131
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 24
|
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 |
|
 |
Stazh
Redoviti posjetitelj
 
Posts: 84
Group: Registered
Joined: Mar 2006
Status:
Offline
Reputation: 4
|
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 |
|
 |
Len0
Redoviti posjetitelj
 
Posts: 242
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 2
|
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:
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 |
|
 |
Stazh
Redoviti posjetitelj
 
Posts: 84
Group: Registered
Joined: Mar 2006
Status:
Offline
Reputation: 4
|
RE: Pisanje u registry bazu
@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:
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 |
|
 |
Puž
Redoviti posjetitelj
 
Posts: 131
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 24
|
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.
#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 |
|
 |
Len0
Redoviti posjetitelj
 
Posts: 242
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 2
|
RE: Pisanje u registry bazu
Proucit cu, mislim da jos treba da ucim prije nego sto ovakva pitanja budem postavljao.

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 |
|
 |
Puž
Redoviti posjetitelj
 
Posts: 131
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 24
|
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. 
Zamjeni
CString l_strExampleKey = "SOFTWARE\TestKey";
sa
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
Treba bit
This post was last modified: 28-10-2007 12:12 AM by Puž.
|
|
| 28-10-2007 12:03 AM |
|
 |
Len0
Redoviti posjetitelj
 
Posts: 242
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 2
|
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 |
|
 |
Puž
Redoviti posjetitelj
 
Posts: 131
Group: Registered
Joined: Mar 2007
Status:
Offline
Reputation: 24
|
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. 
Budući da pitaš
Kako da stavim neku vrijednost kljucu koji sam napravio???
Pretpostaviti ću da misliš na "Value Data" "(Default)" "Value"-a.
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 |
|
 |
|
|