CPU Bezeichnung und Geschwindigkeit
-
Hallo,
wie kann ich die CPU Bezeichnung und die maximal verfügbare Geschwindigkeit (CPU Takt) auslesen ohne die Verwendung von ASM (wird unter x64 nicht unterstützt) und ohne den zugriff auf die Registry (funktioniert z. B. unter Vista nur mit Adminrechten)?
-
Für die Taktfrequenz kannst du zB die Funktion CallNtPowerInformation verwenden. Was die CPU Bezeichnung betrifft, da würde mir momentan nur cpuid einfallen. Falls dein Compiler Intrinsics wie __cpuid (intrin.h) beim Microsoft Compiler unterstützt, brauchst du nicht mal Assembler dafür. Funktioniert aber logischerweise nur bei x86 CPUs.
-
Was hast du gegen die Registy?
Unter Vista brauchst du dazu keine Admin-Rechte.
-
Die Anwendung muss mit Adminrechten gestartet werden damit die Werte aus der Registry ausgelesen werden können, anderfalls schlägt das auslesen fehl. Ich möchte den Benutzer nicht dazu nötigen die Anwendung immer mit Adminrechten zu starten.
HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0, ohne Adminrechte keine Werte. Ich habs unter Vista x64 getestet!
-
Ich brauch dazu keinerlei Admin-Rechte unter Vista x64
Probier das hier mal:void ShowCPU(void) { cout<<"#CPU"<<endl; DWORD dwLen=256; DWORD dwSizeOfDWORD= sizeof(DWORD); char acCPUName[256]=""; DWORD dwCPUMHz=0; HKEY hkBaseCPU; LONG lResult= RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 0,KEY_READ,&hkBaseCPU); if(lResult != ERROR_SUCCESS) { cout<<"Fehler 1! RegistryKey konnte nicht geoeffnet werden."<<endl; return; } RegQueryValueEx(hkBaseCPU,"ProcessorNameString",0,0,acCPUName,&dwLen); RegQueryValueEx(hkBaseCPU,"~MHz",0,0,(BYTE*)&dwCPUMHz,&dwSizeOfDWORD); RegCloseKey(hkBaseCPU); cout<<" Name : "<<acCPUName<<endl; cout<<" Leistung : "<<dwCPUMHz<<" MHz"<<endl; }Ist aus einem älteren Programm von mir.