Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- #include <string>
- #include <sstream>
- #include <Winbase.h>
- #include <bcrypt.h>
- #include <wbemidl.h>
- #include <intrin.h>
- #include <comdef.h>
- #include <iomanip>
- #include <objbase.h>
- #include <iphlpapi.h>
- #pragma comment(lib, "wbemuuid.lib")
- #pragma comment(lib, "Iphlpapi.lib")
- using namespace std;
- string GetUserName() {
- char username[256];
- DWORD size = sizeof(username);
- if (GetUserNameA(username, &size)) {
- return string(username);
- }
- return "";
- }
- string GetComputerName() {
- char computerName[256];
- DWORD size = sizeof(computerName);
- if (GetComputerNameA(computerName, &size)) {
- return string(computerName);
- }
- return "";
- }
- string GetProcessorID() {
- char buffer[1024];
- unsigned int id[4] = { 0 };
- __cpuid((int*)id, 0);
- snprintf(buffer, sizeof(buffer), "%X-%X-%X-%X", id[0], id[1], id[2], id[3]);
- return string(buffer);
- }
- string GetHardDiskSerial() {
- string serial;
- IWbemLocator *pLoc = NULL;
- IWbemServices *pSvc = NULL;
- HRESULT hres;
- hres = CoInitializeEx(0, COINIT_MULTITHREADED);
- if (FAILED(hres)) {
- return "Failed to initialize COM library";
- }
- hres = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
- RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
- if (FAILED(hres)) {
- CoUninitialize();
- return "Failed to initialize security";
- }
- hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *)&pLoc);
- if (FAILED(hres)) {
- CoUninitialize();
- return "Failed to create IWbemLocator object";
- }
- BSTR strNamespace = SysAllocString(L"ROOT\\CIMV2");
- hres = pLoc->ConnectServer(strNamespace, NULL, NULL, 0, NULL, 0, 0, &pSvc);
- SysFreeString(strNamespace);
- if (FAILED(hres)) {
- pLoc->Release();
- CoUninitialize();
- return "Failed to connect to WMI";
- }
- BSTR strQuery = SysAllocString(L"WQL");
- BSTR strSQL = SysAllocString(L"SELECT * FROM Win32_DiskDrive");
- IEnumWbemClassObject* pEnumerator = NULL;
- hres = pSvc->ExecQuery(strQuery, strSQL, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
- SysFreeString(strQuery);
- SysFreeString(strSQL);
- if (FAILED(hres)) {
- pSvc->Release();
- pLoc->Release();
- CoUninitialize();
- return "Failed to query WMI for disk information";
- }
- IWbemClassObject *pClassObject;
- ULONG uReturn = 0;
- hres = pEnumerator->Next(WBEM_INFINITE, 1, &pClassObject, &uReturn);
- if (uReturn) {
- VARIANT vtProp;
- hres = pClassObject->Get(L"SerialNumber", 0, &vtProp, 0, 0);
- if (SUCCEEDED(hres)) {
- serial = string(_bstr_t(vtProp.bstrVal));
- VariantClear(&vtProp);
- }
- pClassObject->Release();
- }
- pEnumerator->Release();
- pSvc->Release();
- pLoc->Release();
- CoUninitialize();
- return serial.empty() ? "Hard disk serial number not found" : serial;
- }
- string GetMACAddress() {
- IP_ADAPTER_INFO adapterInfo[16];
- DWORD dwBufLen = sizeof(adapterInfo);
- if (GetAdaptersInfo(adapterInfo, &dwBufLen) == ERROR_SUCCESS) {
- for (int i = 0; i < (dwBufLen / sizeof(IP_ADAPTER_INFO)); i++) {
- if (adapterInfo[i].AddressLength == 6) {
- stringstream macAddress;
- for (int j = 0; j < 6; j++) {
- macAddress << hex << setw(2) << setfill('0') << (int)adapterInfo[i].Address[j];
- if (j != 5) macAddress << ":";
- }
- return macAddress.str();
- }
- }
- }
- return "MAC Address not found";
- }
- string GetUUID() {
- IWbemLocator *pLoc = NULL;
- IWbemServices *pSvc = NULL;
- HRESULT hres;
- string uuid;
- hres = CoInitializeEx(0, COINIT_MULTITHREADED);
- if (FAILED(hres)) {
- return "Failed to initialize COM library";
- }
- hres = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
- RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
- if (FAILED(hres)) {
- CoUninitialize();
- return "Failed to initialize security";
- }
- hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *)&pLoc);
- if (FAILED(hres)) {
- CoUninitialize();
- return "Failed to create IWbemLocator object";
- }
- BSTR strNamespace = SysAllocString(L"ROOT\\CIMV2");
- hres = pLoc->ConnectServer(strNamespace, NULL, NULL, 0, NULL, 0, 0, &pSvc);
- SysFreeString(strNamespace);
- if (FAILED(hres)) {
- pLoc->Release();
- CoUninitialize();
- return "Failed to connect to WMI";
- }
- BSTR strQuery = SysAllocString(L"WQL");
- BSTR strSQL = SysAllocString(L"SELECT * FROM Win32_ComputerSystemProduct");
- IEnumWbemClassObject* pEnumerator = NULL;
- hres = pSvc->ExecQuery(strQuery, strSQL, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
- SysFreeString(strQuery);
- SysFreeString(strSQL);
- if (FAILED(hres)) {
- pSvc->Release();
- pLoc->Release();
- CoUninitialize();
- return "Failed to query WMI for UUID information";
- }
- IWbemClassObject *pClassObject;
- ULONG uReturn = 0;
- hres = pEnumerator->Next(WBEM_INFINITE, 1, &pClassObject, &uReturn);
- if (uReturn) {
- VARIANT vtProp;
- hres = pClassObject->Get(L"UUID", 0, &vtProp, 0, 0);
- if (SUCCEEDED(hres)) {
- uuid = string(_bstr_t(vtProp.bstrVal));
- VariantClear(&vtProp);
- }
- pClassObject->Release();
- }
- pEnumerator->Release();
- pSvc->Release();
- pLoc->Release();
- CoUninitialize();
- return uuid.empty() ? "UUID not found" : uuid;
- }
- int main() {
- cout << "User Name: " << GetUserName() << endl;
- cout << "Computer Name: " << GetComputerName() << endl;
- cout << "Processor ID: " << GetProcessorID() << endl;
- cout << "Hard Disk Serial: " << GetHardDiskSerial() << endl;
- cout << "MAC Address: " << GetMACAddress() << endl;
- cout << "UUID: " << GetUUID() << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement