Zápis binární hodnoty do registru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zápis binární hodnoty do registru – C / C++ – Fórum – Programujte.comZápis binární hodnoty do registru – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
MaxDevaine
~ Anonymní uživatel
3 příspěvky
4. 9. 2008   #1
-
0
-

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

Nahlásit jako SPAM
IP: 195.144.125.–
Reklama
Reklama
MaxDevaine
~ Anonymní uživatel
3 příspěvky
4. 9. 2008   #2
-
0
-

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

Nahlásit jako SPAM
IP: 195.144.125.–
dannyk0
Věrný člen
6. 9. 2008   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
MaxDevaine
~ Anonymní uživatel
3 příspěvky
17. 9. 2008   #4
-
0
-

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

Nahlásit jako SPAM
IP: 195.144.125.–
dannyk0
Věrný člen
17. 9. 2008   #5
-
0
-

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

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 49 hostů

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

Binární zápis chyba — založil Mutagen

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý