Dobrý den,
prosím vás, nevíte někdo, jak zapsat binární hodnoty do registrů windows? Ostatní zápisy / mazání mám už implementované a chybí mi jen toto.
Zatím jsem se dohrabal k takovéto funkci :
BOOL WriteRegistryTaskmgr()
{
char epwd[256];
strcpy_s(epwd, "hodnota");
BOOL bRes = TRUE;
HKEY hKey = registry_OpenKeyHKLM("Software\\Microsoft\\Windows NT\\CurrentVersion\\TaskManager", NULL);
if ( !hKey )
return FALSE;
if ( !RegSetValueEx(hKey, "Preferences", 0, REG_BINARY, (LPBYTE)&epwd, 4))
bRes = FALSE;
if ( !registry_CloseKey(hKey) )
bRes = FALSE;
return bRes;
}
Cestu v registru ignorujte, mám jí jen pokusně. Zdá, že vše šlape pěkně, data se převedou a nasypou do pole. Problém ovšem je, že mám k dispozici zdrojová data v HEX formě a nevím ani, v jaké formě probíhá zápis :(.
Jednoduše řečeno, mám vyexportovaná jeden klíč a pokouším se ho naimportovat pomocí céčka.
Otázkou je, jak nato :-/.
Klíč vypadá takto :
Windows Registry Editor Version 5.00
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\TaskManager]
"Preferences"=hex:31,37,31,35,bb,b1,bc,13,df,13,1f,13,15,d6,41,44,a4,6e,46,16,\
1f,16,df,46,f1,60
Byl by nějaký nápad, jak funkci dotáhnout do plného provozu?
děkuji
Zdar Max
Fórum › C / C++
Zápis binární hodnoty do registru
To MaxDevaine :
Jop, fce por otevření klíče je :
HKEY registry_OpenKeyHKLM(LPCTSTR lpKeyName, LPBOOL lpbCreated)
{
DWORD dwDisp = 0;
HKEY hkResult = NULL;
if ( RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpKeyName, 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp) != ERROR_SUCCESS )
return NULL;
if ( lpbCreated )
*lpbCreated = ( dwDisp & REG_CREATED_NEW_KEY );
return hkResult;
}
Zdar Max
Uplne presne nechapu,co teda potrebujes vedet.Jak vypadaji ty vstupni data?V jakem typu je uchovas?
Ono celkove je asi nejlepsi cista data uchovavat ve VOID * typu.Pak si muzes alokovat LPBYTE pole,ktere se pouziva v RegSetValueEx funkci a pomoci API CopyMemory nebo funkce memcpy naplnit ty pole.
Ale rikam,presne nevim,v cem mas problem,chtelo by to nejaky vstupni data.
To dannyk :
Ahoj, díky za reakci, byl jsem mimo republiku a užíval si klidu.
Mno, jde o to, že viz výše jsem vyexportoval klíč z registru do klasického *.reg souboru. Nu a chtěl bych ten klíč naimportovat zpět, resp. bych tam ty data v HEX formátu chtěl nalít zpátky pomocí céčka a fcí, které mám spáchané viz výše. Jen nevím, jak na to.
Teď napíšu maximální blbost, ale tak nějak bych si to představoval :
BOOL WriteRegistryTaskmgr()
{
char epwd[256];
strcpy_s(epwd, "hex:00,00,00,00");
BOOL bRes = TRUE;
HKEY hKey = registry_OpenKeyHKLM("Software\\Microsoft\\Windows NT\\CurrentVersion\\TaskManager", NULL);
if ( !hKey )
return FALSE;
if ( !RegSetValueEx(hKey, "Preferences", 0, REG_BINARY, (LPBYTE)&epwd, 4))
bRes = FALSE;
if ( !registry_CloseKey(hKey) )
bRes = FALSE;
return bRes;
}
Nebo zjednodušeně řečeno nějak takto :
RegSetValueEx( hKey, "NTAuthEnabled", NULL , REG_BINARY, "hex:00,00,00,00" , 16 );
Tato forma je samozřejmě hloupost, ale snad je patrné, čeho bych rád docílil.
Děkuji
S pozdravem Max Devaine
Tak tady ti pomuze jedine udelat si funkci,ktera ty hex data v textovem formatu prevede do pole bytu se stejnou hodnotou.
Konkretne mam na mysli hex:4D,3A ... bude v poli vypadat {77,58}.
Ale tohle je vylozene o algoritmovani.Zkus pohledat po netu a mozna najdes nejaky kod,ktery to prevadi nebo si napis neco vlastniho.Nemelo by to byt nic strasnyho.Nejdriv si rozparsujes ten hex retezec podle carek do nejakeho pole.Pak to pole budes prochazet a z jednotlivych retezcu budes ziskavat hodnoty hodnoty odzadu a prepocitavat je na cislo a to ukladat do pole.Abys nemusel hledat,jak se prevadi na hex na dec,tak tady je maly priklad:
Tady mas info,jak se prevadi z hex na dec:
http://cs.wikipedia.org/wiki/Hexadecim%C3%A1ln%C3%AD_soustava
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zápis do registru — založil Míra
Zápis do registru — založil Kenvelo
Zapis do registru v c — založil Anonymní uživatel
čtení z win registru - zobrazeni hodnoty REG_SZ do txtboxu — založil davhoos
Binární zápis chyba — založil Mutagen
Moderátoři diskuze