SystemInfos auslesen
-
Hallo!
Ich soll hier in der Firma einen Support-Tool schreiben, der bei dem Kunden eingesetzt wird. Dieses Tool sollte nach möglichkeit unter W98, NT4, Win2k und WinXP funktionieren.
Eine Funktion dieses Tools ist es die Systeminfos zu sammeln. (System, prozessor, arbeitspeicher, usw...)
Nun mein Problem: Wie komme ich an die Infos? Ich hab schon probiert die MSInfo32 anzusprechen, allerdings verhält sie sich auf jedem system anders...
Gibt es vielleicht irgendwo eine Lib mit den notwendigen funktionen?
THX
-
gugg ma in die reference unter systeminformatio....
[url]http://216.26.161.91/vbapi/ref/funcc.html [/url]
hoffe, dasseshilft.
MFG:Micha_Bln
-
Hmm, das kenne ich schon zum größten teil, das einzigste was ich da verwenden kann, ist "GetVersionEx", allerdings brauche ich da einiges mehr... ich hab an etwas gedacht, das mir etwa die informationsmenge von MSInfo32 bietet. Wenigstens diese sachen hier :
Betriebssystemname Microsoft Windows XP Professional
Version 5.1.2600 Build 2600
Betriebssystemhersteller Microsoft Corporation
Systemname PC-JBTN2
Systemhersteller System Manufacturer
Systemmodell System Name
Systemtyp X86-basierter PC
Prozessor x86 Family 6 Model 7 Stepping 3 GenuineIntel ~551 Mhz
BIOS-Version/-Datum Award Software, Inc. ASUS P3B-F ACPI BIOS Revision 1004, 19.10.1999
SMBIOS-Version 2.3
Windows-Verzeichnis C:\WINDOWS
Systemverzeichnis C:\WINDOWS\System32
Startgerät \Device\HarddiskVolume1
Gebietsschema Deutschland
Hardwareabstraktionsebene Version = "5.1.2600.0 (xpclient.010817-1148)"
Benutzername ******
Zeitzone Westeuropäische Sommerzeit
Gesamter realer Speicher 256,00 MB
Verfügbarer realer Speicher 79,53 MB
Gesamter virtueller Speicher 874,10 MB
Verfügbarer virtueller Speicher 520,41 MB
Größe der Auslagerungsdatei 618,57 MB
Auslagerungsdatei C:\pagefile.sys
*ist halt einiges...
-
Also hab hier was für dich (Windows erkennung):
OSVERSIONINFOEX osvi; BOOL bOsVersionInfoEx; ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if(!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *) &osvi)) ) { osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); if (! GetVersionEx ((OSVERSIONINFO *) &osvi) ); } switch(osvi.dwPlatformId) { case VER_PLATFORM_WIN32_NT: if (osvi.dwMajorVersion <= 4) system.m_system = "Microsoft Windows NT"; if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) system.m_system = "Microsoft Windows 2000"; if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) system.m_system = "Microsoft Windows XP \"Whistler\""; HKEY hKey; char szProductType[80]; DWORD dwBufLen; RegOpenKeyEx( HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\ProductOptions", 0,KEY_QUERY_VALUE, &hKey); RegQueryValueEx( hKey, "ProductType",NULL,NULL,(LPBYTE) szProductType, &dwBufLen); RegCloseKey (hKey); if (lstrcmpi("WINNT", szProductType) == 0) system.m_typ = "Workstation"; if (lstrcmpi("SERVERNT",szProductType) == 0) system.m_typ = "Server"; if (osvi.dwMajorVersion <= 4) { printf("Version %d.%d %s (Build %d)\n", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF); } else { printf("%s (Build %d]\n", osvi.szCSDVersion, osvi.dwBuildNumber & 0xFFFF); } break; case VER_PLATFORM_WIN32_WINDOWS: if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0) { system.m_system = "Microsoft Windows 95"; if (osvi.szCSDVersion[1] == 'C') system.m_typ = "OSR2"; } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10) { system.m_system = "Microsoft Windows 98"; if (osvi.szCSDVersion[1] == 'A') system.m_typ = "Second Edition"; } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90) { system.m_system = " Mircosoft Windows ME"; } break; case VER_PLATFORM_WIN32s: system.m_system = "Micorsoft Win32s"; break; }
Um die MHz auszulesen, hab ich was auf der Arbeit, werd ich morgen hier posten! Schau dir mal diesen Registry Ordner an : HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
Dort findest du Sachen zur CPU (wie gesagt um die MHz richtig rauszubekommen morgen)Ansonsten schau mal bei www.codeproject.net und www.codeguru.com , dort wirst du auch fündig..
Hoffe dir geholfen zu haben
[ Dieser Beitrag wurde am 21.05.2002 um 16:15 Uhr von C-O-M-M-A-N-D-E-R editiert. ]
-
Ach so ja, um an den SystemPath zu kommen : GetSystemDirectory
Um den Computernamen zu bekommen :
CString user; unsigned long nSize = 255; unsigned long* pnSize = &nSize; char computer_name[255]; GetComputerName( computer_name, pnSize ); user = computer_name; UpdateData(FALSE);
Zack und schon haste den Computernamen
So mal schauen was ich noch auf Lager hab..
Ach ja den Benutzer:
#include <LMCONS.H> //einfügen CString sUserName; DWORD nnSize = UNLEN +1; GetUserName(sUserName.GetBuffer(nnSize), &nnSize); sUserName.ReleaseBuffer();
So hatte erst den Computercode jetzt auch den Benutzer
bis dahin
[ Dieser Beitrag wurde am 21.05.2002 um 16:41 Uhr von C-O-M-M-A-N-D-E-R editiert. ]
-
bin leider für heute und morgen krankgeschrieben vom doc. deshalb war ich nciht auf der arbeit..
code liefer ich nach
-
Und der Speicher:
MEMORYSTATUS
The MEMORYSTATUS structure contains information about the current state of both physical and virtual memory. The GlobalMemoryStatus function stores information in a MEMORYSTATUS structure.CPU-Infos gibts per Mail.
[ Dieser Beitrag wurde am 23.05.2002 um 01:23 Uhr von Luckie editiert. ]
-
lol, CPU Infos hab ich doch schon beschrieben.. *g*
den Reg Eintrag auslesen
-
Ich mache es mit Assembler :D. Nur leider sind das drei Dateien , also etwas viel zum Posten und die Geschwindigkeit gibt es auch.
-
So Speed gibts bei mir auch, wie versprcohen, hab den Code jetzt von der Arbeit :
LONG result; HKEY hKey; TCHAR vendorData [64]; DWORD data; DWORD dataSize; CString m_stVendorInfo; // Get the processor speed info. result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Hardware\\Description\\System\\CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey); // Check if the function has succeeded. if (result == ERROR_SUCCESS) { result = ::RegQueryValueEx (hKey, _T("~MHz"), NULL, NULL, (LPBYTE)&data, &dataSize); m_cpu.Format ("%d", data); m_cpu += _T (" MHz"); //dort steht nun die speed drin UpdateData(FALSE); dataSize = sizeof (vendorData); result = ::RegQueryValueEx (hKey, _T("VendorIdentifier"), NULL, NULL, (LPBYTE)vendorData, &dataSize); m_stVendorInfo.Format ("%s", vendorData); } // Make sure to close the reg key RegCloseKey (hKey);
und schon hast du in m_cpu die geschwindigkeit deiner CPU
-
Na das ist ja schon einiges, danke Leute...
Habt ihr auch was zum Internetexplorer und Office Paket?
-
Push it up, Baby!!
-
push it,
schon alt das thema, aber ich wüsste auch gerne wie ich 100 prozentig meine office version herausfinde.
Danke schonmal im voraus
-
Hi
also:
@Commander und Panic Man
falls du das Tool auch unter Win98 benutzen willst, funzt das mit dem CPU MhZ Bestimmung nicht mehr. Der Eintrag in der Registry ist nur unter Win2000 und WinXp vorhanden (vermutlich alle NT Systeme).2. Internet Explorer Version
TCHAR szValue[1024]; DWORD dwCount = sizeof (szValue); CRegKey key; key.Open(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Internet Explorer",KEY_READ); if(key.QueryValue(szValue,"Version",&dwCount)==ERROR_FILE_NOT_FOUND)
3. die Windows Sprache kannst du an der Datei user.exe im Windows System Verzeichnis erkennen (einfach mal in der MSDN suchen)
die meisten anderen Infos kannst du auch der Registry entlocken, also einfach mal ein bischen suchen und in der MSDN nachsehen!
Gruß