[SYSTEMINFO]

Add Italian translation (patch by Vincenzo Cotugno <vins8920 at hotmail dot com>)
Decrease buffer size
Don't print NULL domain/workgroup
Add network adapters detection

svn path=/trunk/; revision=51260
This commit is contained in:
Rafal Harabien 2011-04-05 21:20:42 +00:00
parent be54395eb8
commit 4ce4beb1cb
13 changed files with 318 additions and 101 deletions

View file

@ -64,5 +64,11 @@ IDS_PAGEFILE_LOC, "Auslagerungsdateipfad(e): %s"
IDS_DOMAIN, "Domain"
IDS_NETWORK_CARDS, "Netzwerkkarte(n)"
IDS_NETWORK_CARDS_FORMAT, "%u Installiert."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -62,5 +62,11 @@ IDS_PAGEFILE_LOC, "Page File Location(s)"
IDS_DOMAIN, "Domain"
IDS_NETWORK_CARDS, "Network Card(s)"
IDS_NETWORK_CARDS_FORMAT, "%u Installed."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -67,5 +67,11 @@ IDS_PAGEFILE_LOC, "Ruta(s) Archivo Paginaci
IDS_DOMAIN, "Dominio"
IDS_NETWORK_CARDS, "Tarjeta(s) de Red"
IDS_NETWORK_CARDS_FORMAT, "%u No Instalada."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -62,5 +62,11 @@ IDS_PAGEFILE_LOC, "Emplacement(s) des fichiers d'
IDS_DOMAIN, "Domaine"
IDS_NETWORK_CARDS, "Carte(s) réseau"
IDS_NETWORK_CARDS_FORMAT, "%u installée(s)."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -0,0 +1,72 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "SYSTEMINFO [/S sistema [/U nomeutente [/P [password]]]] [/FO formato] [/NH]\n\n\
Descrizione:\n\
Questà utilità permettere ad un amministratore di\n\
visualizzare alcune informazioni basilari sulla configurazione del pc.\n\n\
Lista Parametri:\n\
/S sistema Specifica il sistema remoto a cui connettersi.\n\n\
/U [dominio\\]utente Specifica il contesto utente in cui eseguire\n\
il comando.\n\n\
/P [password] Specifica la password per il dato\n\
contesto utente. Se omesso, viene richiesto.\n\n\
/FO formato Specifica il formato con cui l'output\n\
viene mostrato.\n\
Valori Validi: ""TABLE"", ""LIST"", ""CSV"".\n\n\
/NH Specifica che la ""Etichetta Colonna"" non\n\
deve essere mostrata nell'output.\n\
Valido solo per i formati ""TABLE"" e ""CSV"" .\n\n\
/? Mostra questo aiuto.\n\n\
Esempi:\n\
SYSTEMINFO\n\
SYSTEMINFO /?\n\
SYSTEMINFO /S sistema\n\
SYSTEMINFO /S sistema /U utente\n\
SYSTEMINFO /S sistema /U dominio\\utente /P password /FO TABLE\n\
SYSTEMINFO /S sistema /FO LIST\n\
SYSTEMINFO /S sistema /FO CSV /NH\n"
IDS_HOST_NAME, "Nome Host"
IDS_OS_NAME, "Nome SO"
IDS_OS_VERSION, "Versione SO"
IDS_BUILD, "Build"
IDS_OS_BUILD_TYPE, "Tipo SO"
IDS_REG_OWNER, "Proprietario Registrato"
IDS_REG_ORG, "Organizzazione Registrata"
IDS_PRODUCT_ID, "ID Prodotto"
IDS_INST_DATE, "Data Installazione"
IDS_UP_TIME, "Tempo di Avvio Sistema"
IDS_UP_TIME_FORMAT "%u Giorno, %u Ore, %u Minuti, %u Secondi"
IDS_SYS_MANUFACTURER, "Produttore PC"
IDS_SYS_MODEL, "Modello Sistema"
IDS_SYS_TYPE, "Tipo Sistema"
IDS_PROCESSORS, "Processore"
IDS_PROCESSORS_FORMAT, "%u Processore(i) Installato."
IDS_BIOS_DATE, "Data BIOS"
IDS_BIOS_VERSION, "Versione BIOS"
IDS_ROS_DIR, "Directory ReactOS"
IDS_SYS_DIR, "Directory di Sistema"
IDS_BOOT_DEV, "Periferica di Avvio"
IDS_SYS_LOCALE, "Impostazioni Locali Sistema"
IDS_INPUT_LOCALE, "Impostazioni Locali Input"
IDS_TIME_ZONE, "Fuso Orario"
IDS_TOTAL_PHYS_MEM, "Memoria Fisica Totale"
IDS_AVAIL_PHISICAL_MEM, "Memoria Fisica Disponibile"
IDS_VIRT_MEM_MAX, "Memoria Virtuale: Dimensione Massima"
IDS_VIRT_MEM_AVAIL, "Memoria Virtuale: Disponibile"
IDS_VIRT_MEM_INUSE, "Memoria Virtuale: In Uso"
IDS_PAGEFILE_LOC, "Posizioni File di Paging"
IDS_DOMAIN, "Dominio"
IDS_NETWORK_CARDS, "Schede di Rete"
IDS_NETWORK_CARDS_FORMAT, "%u Installate."
IDS_CONNECTION_NAME, "Nome Connessione"
IDS_STATUS, "Stato"
IDS_MEDIA_DISCONNECTED, "Disconnesso"
IDS_DHCP_ENABLED, "DHCP Abilitato"
IDS_NO, "No"
IDS_IP_ADDRESSES, "Indirizzo(i) IP"
END

View file

@ -62,5 +62,11 @@ IDS_PAGEFILE_LOC, "Sidevekslingsfil lokalsjon(er)"
IDS_DOMAIN, "Domene"
IDS_NETWORK_CARDS, "Nettverkskort(er)"
IDS_NETWORK_CARDS_FORMAT, "%u installert."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -69,5 +69,11 @@ IDS_PAGEFILE_LOC, "Lokalizacja pliku wymiany"
IDS_DOMAIN, "Domena"
IDS_NETWORK_CARDS, "Karty sieciowe"
IDS_NETWORK_CARDS_FORMAT, "Zainstalowane karty NIC: %u."
IDS_CONNECTION_NAME, "Nazwa po³¹czenia"
IDS_STATUS, "Stan"
IDS_MEDIA_DISCONNECTED, "Noœnik od³¹czony"
IDS_DHCP_ENABLED, "DHCP w³¹czone"
IDS_NO, "Nie"
IDS_IP_ADDRESSES, "Adresy IP"
END

View file

@ -66,5 +66,11 @@ IDS_PAGEFILE_LOC, "Umiestnenie(a) str
IDS_DOMAIN, "Domna"
IDS_NETWORK_CARDS, "Sieœov  karta(y)"
IDS_NETWORK_CARDS_FORMAT, "%u nainçtalovan."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -70,5 +70,11 @@ IDS_PAGEFILE_LOC, "
IDS_DOMAIN, "Äîìåí"
IDS_NETWORK_CARDS, "Ìåðåæíà êàðòà(è)"
IDS_NETWORK_CARDS_FORMAT, "%u Installed."
IDS_CONNECTION_NAME, "Connection Name"
IDS_STATUS, "Status"
IDS_MEDIA_DISCONNECTED, "Media disconnected"
IDS_DHCP_ENABLED, "DHCP Enabled"
IDS_NO, "No"
IDS_IP_ADDRESSES, "IP address(es)"
END

View file

@ -1,35 +1,41 @@
#define IDS_USAGE 1000
#define IDS_USAGE 1000
#define IDS_HOST_NAME 100
#define IDS_OS_NAME 101
#define IDS_OS_VERSION 102
#define IDS_BUILD 103
#define IDS_OS_BUILD_TYPE 104
#define IDS_REG_OWNER 105
#define IDS_REG_ORG 106
#define IDS_PRODUCT_ID 107
#define IDS_INST_DATE 108
#define IDS_UP_TIME 109
#define IDS_UP_TIME_FORMAT 110
#define IDS_SYS_MANUFACTURER 111
#define IDS_SYS_MODEL 112
#define IDS_SYS_TYPE 113
#define IDS_PROCESSORS 114
#define IDS_PROCESSORS_FORMAT 115
#define IDS_BIOS_DATE 116
#define IDS_BIOS_VERSION 117
#define IDS_ROS_DIR 118
#define IDS_SYS_DIR 119
#define IDS_BOOT_DEV 120
#define IDS_SYS_LOCALE 121
#define IDS_INPUT_LOCALE 122
#define IDS_TOTAL_PHYS_MEM 123
#define IDS_AVAIL_PHISICAL_MEM 124
#define IDS_VIRT_MEM_MAX 125
#define IDS_VIRT_MEM_AVAIL 126
#define IDS_VIRT_MEM_INUSE 127
#define IDS_PAGEFILE_LOC 128
#define IDS_TIME_ZONE 129
#define IDS_DOMAIN 130
#define IDS_NETWORK_CARDS 131
#define IDS_HOST_NAME 100
#define IDS_OS_NAME 101
#define IDS_OS_VERSION 102
#define IDS_BUILD 103
#define IDS_OS_BUILD_TYPE 104
#define IDS_REG_OWNER 105
#define IDS_REG_ORG 106
#define IDS_PRODUCT_ID 107
#define IDS_INST_DATE 108
#define IDS_UP_TIME 109
#define IDS_UP_TIME_FORMAT 110
#define IDS_SYS_MANUFACTURER 111
#define IDS_SYS_MODEL 112
#define IDS_SYS_TYPE 113
#define IDS_PROCESSORS 114
#define IDS_PROCESSORS_FORMAT 115
#define IDS_BIOS_DATE 116
#define IDS_BIOS_VERSION 117
#define IDS_ROS_DIR 118
#define IDS_SYS_DIR 119
#define IDS_BOOT_DEV 120
#define IDS_SYS_LOCALE 121
#define IDS_INPUT_LOCALE 122
#define IDS_TOTAL_PHYS_MEM 123
#define IDS_AVAIL_PHISICAL_MEM 124
#define IDS_VIRT_MEM_MAX 125
#define IDS_VIRT_MEM_AVAIL 126
#define IDS_VIRT_MEM_INUSE 127
#define IDS_PAGEFILE_LOC 128
#define IDS_TIME_ZONE 129
#define IDS_DOMAIN 130
#define IDS_NETWORK_CARDS 131
#define IDS_NETWORK_CARDS_FORMAT 132
#define IDS_CONNECTION_NAME 133
#define IDS_STATUS 134
#define IDS_MEDIA_DISCONNECTED 135
#define IDS_DHCP_ENABLED 136
#define IDS_NO 137
#define IDS_IP_ADDRESSES 138

View file

@ -5,7 +5,9 @@
#include "lang/en-US.rc"
#include "lang/es-ES.rc"
#include "lang/fr-FR.rc"
#include "lang/it-IT.rc"
#include "lang/no-NO.rc"
#include "lang/pl-PL.rc"
#include "lang/sk-SK.rc"
#include "lang/uk-UA.rc"
#include "lang/no-NO.rc"

View file

@ -25,31 +25,22 @@
#include <locale.h>
#include <lm.h>
#include <shlwapi.h>
#include <iphlpapi.h>
#include <winsock2.h>
#include "resource.h"
#define BUFFER_SIZE 32767
#define BUFFER_SIZE 1024
/* Load from resource and convert to OEM */
static
BOOL
GetOemStrings(UINT rcID, LPWSTR OutMsg)
{
if (LoadStringW(GetModuleHandle(NULL), rcID, OutMsg, BUFFER_SIZE))
return TRUE;
return FALSE;
}
/* Load data from registry */
/* Load string from registry */
static
unsigned
RegGetSZ(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR lpBuf, DWORD cchBuf)
{
DWORD dwBytes = cchBuf*sizeof(WCHAR), dwType;
DWORD dwBytes = cchBuf*sizeof(WCHAR), dwType = 0;
unsigned cChars;
/* If SubKy is specified open it */
/* If SubKey is specified open it */
if (lpSubKey && RegOpenKeyExW(hKey,
lpSubKey,
0,
@ -60,6 +51,7 @@ RegGetSZ(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR lpBuf, DWORD c
return 0;
}
/* Query registry value and check its type */
if (RegQueryValueExW(hKey,
lpValueName,
NULL,
@ -70,6 +62,11 @@ RegGetSZ(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR lpBuf, DWORD c
wprintf(L"Warning! Cannot query %s. Last error: %lu, type: %lu.\n", lpValueName, GetLastError(), dwType);
dwBytes = 0;
}
else
{
wcscpy(lpBuf, L"N/A");
dwBytes = 6;
}
/* Close key if we opened it */
if (lpSubKey)
@ -87,6 +84,7 @@ RegGetSZ(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR lpBuf, DWORD c
return cChars;
}
/* Load DWORD from registry */
static
BOOL
RegGetDWORD(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPDWORD lpData)
@ -94,7 +92,7 @@ RegGetDWORD(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPDWORD lpData)
DWORD dwBytes = sizeof(*lpData), dwType;
BOOL bRet = TRUE;
/* If SubKy is specified open it */
/* If SubKey is specified open it */
if (lpSubKey && RegOpenKeyExW(hKey,
lpSubKey,
0,
@ -105,6 +103,7 @@ RegGetDWORD(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPDWORD lpData)
return FALSE;
}
/* Query registry value and check its type */
if (RegQueryValueExW(hKey,
lpValueName,
NULL,
@ -124,6 +123,7 @@ RegGetDWORD(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPDWORD lpData)
return bRet;
}
/* Format bytes */
static
VOID
FormatBytes(LPWSTR lpBuf, unsigned cBytes)
@ -147,6 +147,7 @@ FormatBytes(LPWSTR lpBuf, unsigned cBytes)
wcscpy(lpBuf + i, L" MB");
}
/* Format date and time */
static
VOID
FormatDateTime(time_t Time, LPWSTR lpBuf)
@ -181,30 +182,35 @@ static
VOID
Usage(VOID)
{
WCHAR Buf[BUFFER_SIZE];
if(GetOemStrings(IDS_USAGE, Buf))
WCHAR Buf[4096];
if (LoadStringW(GetModuleHandle(NULL), IDS_USAGE, Buf, 4096))
wprintf(L"%s", Buf);
}
static
VOID
PrintRow(UINT nTitleID, unsigned cxOffset, LPWSTR lpFormat, ...)
PrintRow(UINT nTitleID, BOOL bIndent, LPWSTR lpFormat, ...)
{
WCHAR Buf[BUFFER_SIZE];
va_list Args;
unsigned c;
if (nTitleID)
{
c = LoadStringW(GetModuleHandle(NULL), nTitleID, Buf, BUFFER_SIZE);
c = LoadStringW(GetModuleHandle(NULL), nTitleID, Buf, BUFFER_SIZE - 2);
if (!c)
return;
wcscpy(Buf + c, L":");
wcscpy(Buf + c, L": ");
} else
Buf[0] = L'\0';
wprintf(L"%-32s ", Buf);
if (!bIndent)
wprintf(L"%-32s", Buf);
else if (Buf[0])
wprintf(L"%38s%-16s", L"", Buf);
else
wprintf(L"%38s", L"");
va_start(Args, lpFormat);
vwprintf(lpFormat, Args);
@ -217,10 +223,10 @@ PrintRow(UINT nTitleID, unsigned cxOffset, LPWSTR lpFormat, ...)
VOID
AllSysInfo(VOID)
{
DWORD dwCharCount = BUFFER_SIZE, dwTimestamp;
DWORD dwCharCount = BUFFER_SIZE, dwTimestamp, dwResult;
OSVERSIONINFOW VersionInfo;
SYSTEM_INFO SysInfo;
WCHAR Buf[BUFFER_SIZE], Tmp[BUFFER_SIZE], Msg[BUFFER_SIZE], szSystemDir[MAX_PATH];
WCHAR Buf[BUFFER_SIZE], Tmp[BUFFER_SIZE], szSystemDir[MAX_PATH];
const WCHAR *lpcszSysType;
LPWSTR lpBuffer;
NETSETUP_JOIN_STATUS NetJoinStatus;
@ -228,6 +234,8 @@ AllSysInfo(VOID)
unsigned int cSeconds, i, j;
TIME_ZONE_INFORMATION TimeZoneInfo;
HKEY hKey;
PIP_ADAPTER_ADDRESSES pAdapters;
ULONG cbAdapters;
if (!GetSystemDirectoryW(szSystemDir, sizeof(szSystemDir)/sizeof(szSystemDir[0])))
{
@ -242,7 +250,7 @@ AllSysInfo(VOID)
if (!GetComputerNameW(Buf, &dwCharCount))
wprintf(L"Error! GetComputerName failed.\n");
else
PrintRow(IDS_HOST_NAME, 0, L"%s", Buf);
PrintRow(IDS_HOST_NAME, FALSE, L"%s", Buf);
// open CurrentVersion key
if(RegOpenKeyExW(HKEY_LOCAL_MACHINE,
@ -257,7 +265,7 @@ AllSysInfo(VOID)
//getting OS Name
RegGetSZ(hKey, NULL, L"ProductName", Buf, BUFFER_SIZE);
PrintRow(IDS_OS_NAME, 0, L"%s", Buf);
PrintRow(IDS_OS_NAME, FALSE, L"%s", Buf);
//getting OS Version
ZeroMemory(&VersionInfo, sizeof(VersionInfo));
@ -267,14 +275,14 @@ AllSysInfo(VOID)
if (!LoadStringW(GetModuleHandle(NULL), IDS_BUILD, Tmp, BUFFER_SIZE))
Tmp[0] = L'\0';
PrintRow(IDS_OS_VERSION,
0,
L"%u.%u.%u %s %s %u",
(unsigned)VersionInfo.dwMajorVersion,
(unsigned)VersionInfo.dwMinorVersion,
(unsigned)VersionInfo.dwBuildNumber,
FALSE,
L"%lu.%lu.%lu %s %s %lu",
VersionInfo.dwMajorVersion,
VersionInfo.dwMinorVersion,
VersionInfo.dwBuildNumber,
VersionInfo.szCSDVersion,
Tmp,
(unsigned)VersionInfo.dwBuildNumber);
VersionInfo.dwBuildNumber);
//getting OS Manufacturer
@ -282,24 +290,24 @@ AllSysInfo(VOID)
//getting OS Build Type
RegGetSZ(hKey, NULL, L"CurrentType", Buf, BUFFER_SIZE);
PrintRow(IDS_OS_BUILD_TYPE, 0, L"%s", Buf);
PrintRow(IDS_OS_BUILD_TYPE, FALSE, L"%s", Buf);
//getting Registered Owner
RegGetSZ(hKey, NULL, L"RegisteredOwner", Buf, BUFFER_SIZE);
PrintRow(IDS_REG_OWNER, 0, L"%s", Buf);
PrintRow(IDS_REG_OWNER, FALSE, L"%s", Buf);
//getting Registered Organization
RegGetSZ(hKey, NULL, L"RegisteredOrganization", Buf, BUFFER_SIZE);
PrintRow(IDS_REG_ORG, 0, L"%s", Buf);
PrintRow(IDS_REG_ORG, FALSE, L"%s", Buf);
//getting Product ID
RegGetSZ(hKey, NULL, L"ProductId", Buf, BUFFER_SIZE);
PrintRow(IDS_PRODUCT_ID, 0, L"%s", Buf);
PrintRow(IDS_PRODUCT_ID, FALSE, L"%s", Buf);
//getting Install Date
RegGetDWORD(hKey, NULL, L"InstallDate", &dwTimestamp);
FormatDateTime((time_t)dwTimestamp, Buf);
PrintRow(IDS_INST_DATE, 0, L"%s", Buf);
PrintRow(IDS_INST_DATE, FALSE, L"%s", Buf);
// close Current Version key now
RegCloseKey(hKey);
@ -309,7 +317,7 @@ AllSysInfo(VOID)
if (!LoadStringW(GetModuleHandle(NULL), IDS_UP_TIME_FORMAT, Tmp, BUFFER_SIZE))
Tmp[0] = L'\0';
swprintf(Buf, Tmp, cSeconds / (60*60*24), (cSeconds / (60*60)) % 24, (cSeconds / 60) % 60, cSeconds % 60);
PrintRow(IDS_UP_TIME, 0, L"%s", Buf);
PrintRow(IDS_UP_TIME, FALSE, L"%s", Buf);
//getting System Manufacturer; HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation\Manufacturer for Win >= 6.0
swprintf(Tmp, L"%s\\oeminfo.ini", szSystemDir);
@ -319,7 +327,7 @@ AllSysInfo(VOID)
Buf,
sizeof(Buf)/sizeof(Buf[0]),
Tmp);
PrintRow(IDS_SYS_MANUFACTURER, 0, L"%s", Buf);
PrintRow(IDS_SYS_MANUFACTURER, FALSE, L"%s", Buf);
//getting System Model; HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation\Model for Win >= 6.0
GetPrivateProfileStringW(L"General",
@ -328,7 +336,7 @@ AllSysInfo(VOID)
Buf,
sizeof(Buf)/sizeof(Buf[0]),
Tmp);
PrintRow(IDS_SYS_MODEL, 0, L"%s", Buf);
PrintRow(IDS_SYS_MODEL, FALSE, L"%s", Buf);
//getting System type
switch (SysInfo.wProcessorArchitecture)
@ -346,13 +354,13 @@ AllSysInfo(VOID)
lpcszSysType = L"Unknown";
break;
}
PrintRow(IDS_SYS_TYPE, 0, L"%s", lpcszSysType);
PrintRow(IDS_SYS_TYPE, FALSE, L"%s", lpcszSysType);
//getting Processor(s)
if (!LoadStringW(GetModuleHandle(NULL), IDS_PROCESSORS_FORMAT, Tmp, BUFFER_SIZE))
Tmp[0] = L'\0';
swprintf(Buf, Tmp, (unsigned)SysInfo.dwNumberOfProcessors);
PrintRow(IDS_PROCESSORS, 0, L"%s", Buf);
PrintRow(IDS_PROCESSORS, FALSE, L"%s", Buf);
for(i = 0; i < (unsigned int)SysInfo.dwNumberOfProcessors; i++)
{
swprintf(Tmp, L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\%u", i);
@ -363,7 +371,7 @@ AllSysInfo(VOID)
Buf[j++] = L' ';
RegGetSZ(HKEY_LOCAL_MACHINE, Tmp, L"VendorIdentifier", Buf + j, BUFFER_SIZE - j);
PrintRow(0, 0, L"%s", Buf);
PrintRow(0, FALSE, L"%s", Buf);
}
//getting BIOS Version
@ -372,7 +380,7 @@ AllSysInfo(VOID)
L"SystemBiosVersion",
Buf,
BUFFER_SIZE);
PrintRow(IDS_BIOS_VERSION, 0, L"%s", Buf);
PrintRow(IDS_BIOS_VERSION, FALSE, L"%s", Buf);
//gettings BIOS date
RegGetSZ(HKEY_LOCAL_MACHINE,
@ -380,13 +388,13 @@ AllSysInfo(VOID)
L"SystemBiosDate",
Buf,
BUFFER_SIZE);
PrintRow(IDS_BIOS_DATE, 0, L"%s", Buf);
PrintRow(IDS_BIOS_DATE, FALSE, L"%s", Buf);
//getting ReactOS Directory
if (!GetWindowsDirectoryW(Buf, BUFFER_SIZE))
wprintf(L"Error! GetWindowsDirectory failed.");
else
PrintRow(IDS_ROS_DIR, 0, L"%s", Buf);
PrintRow(IDS_ROS_DIR, FALSE, L"%s", Buf);
//getting System Directory
PrintRow(IDS_SYS_DIR, 0, L"%s", szSystemDir);
@ -397,7 +405,7 @@ AllSysInfo(VOID)
L"SystemPartition",
Buf,
BUFFER_SIZE);
PrintRow(IDS_BOOT_DEV, 0, L"%s", Buf);
PrintRow(IDS_BOOT_DEV, FALSE, L"%s", Buf);
//getting System Locale
if (GetLocaleInfoW(LOCALE_SYSTEM_DEFAULT, LOCALE_ILANGUAGE, Tmp, BUFFER_SIZE))
@ -412,7 +420,7 @@ AllSysInfo(VOID)
if (lpBuffer)
SHLoadIndirectString(lpBuffer+1, lpBuffer+1, BUFFER_SIZE - (lpBuffer-Buf) - 1, NULL);
PrintRow(IDS_SYS_LOCALE, 0, L"%s", Buf);
PrintRow(IDS_SYS_LOCALE, FALSE, L"%s", Buf);
}
//getting Input Locale
@ -432,7 +440,7 @@ AllSysInfo(VOID)
if (lpBuffer)
SHLoadIndirectString(lpBuffer+1, lpBuffer+1, BUFFER_SIZE - (lpBuffer-Buf) - 1, NULL);
PrintRow(IDS_INPUT_LOCALE, 0, L"%s", Buf);
PrintRow(IDS_INPUT_LOCALE, FALSE, L"%s", Buf);
}
//getting Time Zone
@ -448,16 +456,16 @@ AllSysInfo(VOID)
unsigned i;
/* Find current timezone */
dwCharCount = 256; // Windows seems to have a bug - it doesnt accept BUFFER_SIZE here
dwCharCount = BUFFER_SIZE;
for(i = 0; RegEnumKeyExW(hKey, i, Tmp, &dwCharCount, NULL, NULL, NULL, NULL) == ERROR_SUCCESS; ++i, dwCharCount = 255)
{
RegGetSZ(hKey, Tmp, L"Std", Buf, BUFFER_SIZE);
if(!wcscmp(Buf, TimeZoneInfo.StandardName))
if (!wcscmp(Buf, TimeZoneInfo.StandardName))
{
RegGetSZ(hKey, Tmp, L"Display", Buf, BUFFER_SIZE);
PrintRow(IDS_TIME_ZONE, 0, L"%s", Buf);
PrintRow(IDS_TIME_ZONE, FALSE, L"%s", Buf);
break;
}
@ -468,23 +476,23 @@ AllSysInfo(VOID)
//getting Total Physical Memory
GlobalMemoryStatus(&MemoryStatus);
FormatBytes(Buf, MemoryStatus.dwTotalPhys);
PrintRow(IDS_TOTAL_PHYS_MEM, 0, L"%s", Buf);
PrintRow(IDS_TOTAL_PHYS_MEM, FALSE, L"%s", Buf);
//getting Available Physical Memory
FormatBytes(Buf, MemoryStatus.dwAvailPhys);
PrintRow(IDS_AVAIL_PHISICAL_MEM, 0, L"%s", Buf);
PrintRow(IDS_AVAIL_PHISICAL_MEM, FALSE, L"%s", Buf);
//getting Virtual Memory: Max Size
FormatBytes(Buf, MemoryStatus.dwTotalVirtual);
PrintRow(IDS_VIRT_MEM_MAX, 0, L"%s", Buf);
PrintRow(IDS_VIRT_MEM_MAX, FALSE, L"%s", Buf);
//getting Virtual Memory: Available
FormatBytes(Buf, MemoryStatus.dwAvailVirtual);
PrintRow(IDS_VIRT_MEM_AVAIL, 0, L"%s", Buf);
PrintRow(IDS_VIRT_MEM_AVAIL, FALSE, L"%s", Buf);
//getting Virtual Memory: In Use
FormatBytes(Buf, MemoryStatus.dwTotalVirtual-MemoryStatus.dwAvailVirtual);
PrintRow(IDS_VIRT_MEM_INUSE, 0, L"%s", Buf);
PrintRow(IDS_VIRT_MEM_INUSE, FALSE, L"%s", Buf);
//getting Page File Location(s)
if (RegGetSZ(HKEY_LOCAL_MACHINE,
@ -504,13 +512,14 @@ AllSysInfo(VOID)
}
}
PrintRow(IDS_PAGEFILE_LOC, 0, L"%s", Buf);
PrintRow(IDS_PAGEFILE_LOC, FALSE, L"%s", Buf);
}
//getting Domain
if (NetGetJoinInformation (NULL, &lpBuffer, &NetJoinStatus) == NERR_Success)
{
PrintRow(IDS_DOMAIN, 0, L"%s", lpBuffer);
if (NetJoinStatus == NetSetupWorkgroupName || NetJoinStatus == NetSetupDomainName)
PrintRow(IDS_DOMAIN, FALSE, L"%s", lpBuffer);
NetApiBufferFree(lpBuffer);
}
@ -518,22 +527,100 @@ AllSysInfo(VOID)
//getting Logon Server
//getting NetWork Card(s)
if(GetOemStrings(IDS_NETWORK_CARDS, Msg))
cbAdapters = 4096;
pAdapters = malloc(cbAdapters);
while((dwResult = GetAdaptersAddresses(AF_UNSPEC, 0x0002, NULL, pAdapters, &cbAdapters)) == ERROR_BUFFER_OVERFLOW)
{
cbAdapters += 4096;
pAdapters = (PIP_ADAPTER_ADDRESSES)realloc(pAdapters, cbAdapters);
}
if (dwResult == ERROR_SUCCESS)
{
PIP_ADAPTER_ADDRESSES pCurrentAdapter = pAdapters;
unsigned cAdapters = 0;
/* Count adapters */
for(i = 0; pCurrentAdapter; ++i)
{
if (pCurrentAdapter->IfType != 24 && pCurrentAdapter->IfType != 131)
++cAdapters;
pCurrentAdapter = pCurrentAdapter->Next;
}
/* Print adapters count */
if (!LoadStringW(GetModuleHandle(NULL), IDS_NETWORK_CARDS_FORMAT, Tmp, BUFFER_SIZE))
Tmp[0] = L'\0';
swprintf(Buf, Tmp, cAdapters);
PrintRow(IDS_NETWORK_CARDS, FALSE, L"%s", Buf);
/* Show information about each adapter */
pCurrentAdapter = pAdapters;
for(i = 0; pCurrentAdapter; ++i)
{
if (pCurrentAdapter->IfType != 24 && pCurrentAdapter->IfType != 131)//IF_TYPE_SOFTWARE_LOOPBACK)
{
PIP_ADAPTER_UNICAST_ADDRESS pAddress;
PrintRow(0, FALSE, L"[%02u]: %s", i + 1, pCurrentAdapter->Description);
PrintRow(IDS_CONNECTION_NAME, TRUE, L"%s", pCurrentAdapter->FriendlyName);
if (!(pCurrentAdapter->Flags & 0x0004))
{
if (!LoadStringW(GetModuleHandle(NULL), IDS_NO, Buf, BUFFER_SIZE))
Buf[0] = L'\0';
PrintRow(IDS_DHCP_ENABLED, TRUE, Buf);
}
if (pCurrentAdapter->OperStatus == IfOperStatusDown)
{
if (!LoadStringW(GetModuleHandle(NULL), IDS_MEDIA_DISCONNECTED, Buf, BUFFER_SIZE))
Buf[0] = L'\0';
PrintRow(IDS_STATUS, TRUE, Buf);
}
else
{
if (!LoadStringW(GetModuleHandle(NULL), IDS_IP_ADDRESSES, Buf, BUFFER_SIZE))
Buf[0] = L'\0';
PrintRow(0, TRUE, Buf);
pAddress = pCurrentAdapter->FirstUnicastAddress;
for (j = 0; pAddress; ++j)
{
dwCharCount = BUFFER_SIZE;
WSAAddressToStringW(pAddress->Address.lpSockaddr, pAddress->Address.iSockaddrLength, NULL, Buf, &dwCharCount);
PrintRow(0, TRUE, L"[%02u]: %s", j + 1, Buf);
pAddress = pAddress->Next;
}
}
}
pCurrentAdapter = pCurrentAdapter->Next;
}
}
free(pAdapters);
}
/* Main program */
int
main(int argc, char *argv[])
{
WSADATA WsaData;
int i;
setlocale(LC_ALL, "");
if (argc > 1 && (!strcmp(argv[1], "/?") || !strcmp(argv[1], "-?")))
WSAStartup(MAKEWORD(2, 2), &WsaData);
for (i = 1; i < argc; ++i)
{
Usage();
return 0;
if (!strcmp(argv[i], "/?") || !strcmp(argv[i], "-?"))
{
Usage();
return 0;
}
else
{
printf("Unsupported argument: %s\n", argv[i]);
return -1;
}
}
AllSysInfo();

View file

@ -4,6 +4,8 @@
<library>advapi32</library>
<library>netapi32</library>
<library>shlwapi</library>
<library>iphlpapi</library>
<library>ws2_32</library>
<file>systeminfo.c</file>
<file>systeminfo.rc</file>
<file>rsrc.rc</file>