InstallDate auslesen
-
#include <iostream> #include <string> #include <windows.h> using namespace std; #define cls system("cls") #define wait system ("pause>nul") void color(string pColor) { string cmdstr = "color " + pColor; system(cmdstr.c_str()); } typedef unsigned long ulong; typedef unsigned char uchar; bool RegReadValueString( string &value_data, const HKEY &hkey, const char* value) { ulong val_type; // Typ des Wertes prüfen RegQueryValueEx( hkey, // Schlüssel -ein value, // Wert -ein 0, // immer NULL -ein &val_type, // Typ des Wertes -aus 0, // Puffer für Daten des Wertes -ein 0 // Größe des Puffers -aus ); if( val_type != REG_SZ ) return false; // falls Werte-Typ != String // Daten lesen ulong result; ulong size = 1; // Größe des Daten-Puffers uchar *data = new uchar[1]; // Daten-Puffer ( Platz für 1 Zeichen => \0 ) if( result = RegQueryValueEx( hkey, value, 0, 0, data, &size ) ) { delete [] data; if( result != ERROR_MORE_DATA ) return false; // Falls Daten = "\0" try { data = new uchar[size]; // Puffer auf die richtige Größe bringen } catch( bad_alloc ) { return false; // falls Vergrößern des Puffers fehlschlägt } if( RegQueryValueEx( hkey, value, 0, 0, data, &size ) ) return false; // falls weitere Fehler auftreten } value_data = (char*) data; // Daten in C-String-Parameter schreiben delete [] data; // Daten-Array leeren return true; // bei Erfolg } // RegDataToStr int main() { HKEY hkey; string status, name, domain, password; // Schlüssel öffnen if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Host-Key "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", // Unerschlüssel 0, // immer NULL KEY_READ, // Zugriffsberechtigungen zum öffnen &hkey // HKEY-Handle ) ) { cls; color("c"); cout << "Fehler: HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\" << "CurrentVersion\\Winlogon konnte nicht geoeffnet werden.\n" << "beliebige Taste zum Beenden ...\n"; wait; exit(-1); } // Daten lesen // Namen lesen if( !RegReadValueString( name, hkey, "InstallDate" ) ) { cls; color("c"); cout << "Fehler: InstallDate konnte nicht gelesen werden.\n"; wait; exit(-1); } // Hauptmenü ausgeben hm: int choice; cls; cout << "\t\tBenutzername: " << name << endl ; system("PAUSE"); return 0; }Wieso kann ich mit folgenden Code nicht das Installdate auslesen? jedoch alle anderen parts von diesem Unterschlüssel???
-
toxical schrieb:
Wieso kann ich mit folgenden Code nicht das Installdate auslesen?
Zeile 31 : "InstallDate" ist ein REG_DWORD und kein REG_SZ.
-
weisst du /jemand auf die schnelle n vorschlag wie ich aus dem unterschlüssel das installdate in bin/hex auslesen kann???
oder wo man nachsehen kann?
-
Indem Du eben berücksichtigst das RegQueryValueEx eben ein DWORD liefert. Und nicht nur REG_SZ!
-
#include <windows.h> #include <stdio.h> int main(int argc, char *argv[]) { HKEY hkey; char szBuffer[255]; char KeyValue[255]; unsigned long lBufferSize = 255; RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_READ, &hkey) ; RegQueryValueEx(hkey, "InstallDate", NULL, NULL, KeyValue, &lBufferSize) ; RegCloseKey(hkey) ; printf("Wert des Schluessels: %s",KeyValue, "\n\nPress any key...") ; getchar() ; return 0; }ich hab das ganze jetzt vereinfacht... nur wenn ich das installdate auslesen will schreibt er irgendwelche zeichen... irgendwas kapier i net oder mach i falsch alles andere liest er....
-
Mach bitte aus KeyValue ein DWORD!
-
lol
-
Martin Richter schrieb:
Mach bitte aus KeyValue ein DWORD!
jep genau, mein problem ist das ich nicht weiss wie

-
toxical schrieb:
Martin Richter schrieb:
Mach bitte aus KeyValue ein DWORD!
jep genau, mein problem ist das ich nicht weiss wie

#include <windows.h> #include <stdio.h> int main(int argc, char *argv[]) { HKEY hkey; char szBuffer[255]; DWORD KeyValue; DWORD lBufferSize = 255; RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_READ, &hkey) ; RegQueryValueEx(hkey, "InstallDate", NULL, NULL, KeyValue, &lBufferSize) ; RegCloseKey(hkey) ; printf("Wert des Schluessels: %i",KeyValue, "\n\nPress any key...") ; getchar() ; return 0; }gibt aber nicht den richtigen wert aus.... der in der regy gespeichert ist!!
-
http://msdn2.microsoft.com/en-us/library/ms724911.aspx
**lpData
A pointer to a buffer that receives the value's data. This parameter can be NULL if the data is not required.lpcbData
A pointer to a variable that specifies the size of the buffer pointed to by the lpData parameter, in bytes. When the function returns, this variable contains the size of the data copied to lpData.**
-
#include <conio.h> #include <windows.h> #include <stdio.h> #include <tchar.h> #include <iostream> using namespace std; int main(int argc, char *argv[]) { // ############# HKEY m_hMasterKey = HKEY_LOCAL_MACHINE;//Hauptschlüssel LPCTSTR m_lpSubKey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";//Schlüssel Pfad LPCTSTR m_lpValueName = "InstallDate";//Schlüsselname der ausgelesen wird HKEY hKey; DWORD dwNumber = 0; DWORD dwData = sizeof(DWORD); RegOpenKey(m_hMasterKey, m_lpSubKey, &hKey); RegQueryValueEx(hKey,"InstallDate",0,0,(BYTE*)&dwNumber,&dwData); RegCloseKey(hKey) ; // printf("Ausgabe: %i",szValue); cout << dwNumber << endl; // ############## printf ("\n Press any key..."); getch(); return 0; }Jetzt bekomm ich den richtigen Wert... jetzt muss ich die Sekunden noch in ein vernünftiges Datum umwandeln...
thx so far !!!!! :p