18-02-2009, 19:14
|
#6
|
|
Member
Iscritto dal: Jan 2008
Messaggi: 242
|
Quote:
Originariamente inviato da fero86
xeeynamo, il codice che hai riportato commette atti osceni: i piu evidenti, ma non gli unici, sono il fatto che ritorni l'indirizzo di un buffer locale (che viene deallocato non appena esci dalla funzione), il fatto che non controlli i valori di ritorno ed il fatto che non chiudi gli handles che apri.
poi non capisco perché hai allocato 255 DWORD anziché uno visto che te ne bastava uno solo; ed infine non capisco come mai 255 e non 256
ti riscrivo il codice con qualche correzione fondamentale, ma non l'ho testato e quindi non so se ci sono altri errori.
Codice:
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
DWORD RegGet(HKEY hKey, LPCTSTR path, LPCTSTR name){
HKEY hk;
DWORD dwSize=sizeof(DWORD);
DWORD Return;
RegOpenKeyEx(hKey, path, 0, KEY_ALL_ACCESS, &hk);
RegQueryValueEx(hk, name, NULL, NULL, (BYTE*)&Return, &dwSize);
RegCloseKey(hk);
return Return;
}
int main(){
printf("%X", RegGet(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\MICROSOFT\\WINDOWS NT\\CURRENTVERSION"), _T("InstallDate")));
return 0;
}
per il futuro leggi piu attentamente la documentazione in MSDN, ti avrebbe chiarito tutto.
|
Oddio, scandaloso  DEVO imparare a programmare!!! Grazie per i consigli e grazie per il codice che risulta funzionare alla perfezione  spero proprio di raggiungere livelli alti!
Aspetto le altre risposte per le altre domande e poi il topic può essere tranquillamente chiuso
__________________
Asus P8Z77-V Deluxe su CM Storm Stryker / Intel 3570K @4.2GHZ con Corsair H100 / 2x DDR3-1600 Corsair Vegenance @1600mhz CAS 9-9-9-24 / ATI Radeon 4870 @150mhz in idle, @800mhz ingame / Samsung 840 Basic 120gb + Seagate Barracuda 2TB 7200.14 64MB / Asus VW222S 1680x1050
Asus U36SD-RX002V
|
|
|