Advertisement
KidaCoding

Untitled

Jan 13th, 2025
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <string>
  4. #include <sstream>
  5. #include <Winbase.h>
  6. #include <bcrypt.h>
  7. #include <wbemidl.h>
  8. #include <intrin.h>
  9. #include <comdef.h>
  10. #include <iomanip>
  11. #include <objbase.h>
  12. #include <iphlpapi.h>
  13. #pragma comment(lib, "wbemuuid.lib")
  14. #pragma comment(lib, "Iphlpapi.lib")
  15.  
  16. using namespace std;
  17.  
  18. string GetUserName() {
  19. char username[256];
  20. DWORD size = sizeof(username);
  21. if (GetUserNameA(username, &size)) {
  22. return string(username);
  23. }
  24. return "";
  25. }
  26.  
  27. string GetComputerName() {
  28. char computerName[256];
  29. DWORD size = sizeof(computerName);
  30. if (GetComputerNameA(computerName, &size)) {
  31. return string(computerName);
  32. }
  33. return "";
  34. }
  35.  
  36. string GetProcessorID() {
  37. char buffer[1024];
  38. unsigned int id[4] = { 0 };
  39. __cpuid((int*)id, 0);
  40. snprintf(buffer, sizeof(buffer), "%X-%X-%X-%X", id[0], id[1], id[2], id[3]);
  41. return string(buffer);
  42. }
  43.  
  44. string GetHardDiskSerial() {
  45. string serial;
  46. IWbemLocator *pLoc = NULL;
  47. IWbemServices *pSvc = NULL;
  48. HRESULT hres;
  49.  
  50. hres = CoInitializeEx(0, COINIT_MULTITHREADED);
  51. if (FAILED(hres)) {
  52. return "Failed to initialize COM library";
  53. }
  54.  
  55. hres = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
  56. RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
  57. if (FAILED(hres)) {
  58. CoUninitialize();
  59. return "Failed to initialize security";
  60. }
  61.  
  62. hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *)&pLoc);
  63. if (FAILED(hres)) {
  64. CoUninitialize();
  65. return "Failed to create IWbemLocator object";
  66. }
  67.  
  68. BSTR strNamespace = SysAllocString(L"ROOT\\CIMV2");
  69. hres = pLoc->ConnectServer(strNamespace, NULL, NULL, 0, NULL, 0, 0, &pSvc);
  70. SysFreeString(strNamespace);
  71.  
  72. if (FAILED(hres)) {
  73. pLoc->Release();
  74. CoUninitialize();
  75. return "Failed to connect to WMI";
  76. }
  77.  
  78. BSTR strQuery = SysAllocString(L"WQL");
  79. BSTR strSQL = SysAllocString(L"SELECT * FROM Win32_DiskDrive");
  80. IEnumWbemClassObject* pEnumerator = NULL;
  81. hres = pSvc->ExecQuery(strQuery, strSQL, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
  82. SysFreeString(strQuery);
  83. SysFreeString(strSQL);
  84.  
  85. if (FAILED(hres)) {
  86. pSvc->Release();
  87. pLoc->Release();
  88. CoUninitialize();
  89. return "Failed to query WMI for disk information";
  90. }
  91.  
  92. IWbemClassObject *pClassObject;
  93. ULONG uReturn = 0;
  94. hres = pEnumerator->Next(WBEM_INFINITE, 1, &pClassObject, &uReturn);
  95. if (uReturn) {
  96. VARIANT vtProp;
  97. hres = pClassObject->Get(L"SerialNumber", 0, &vtProp, 0, 0);
  98. if (SUCCEEDED(hres)) {
  99. serial = string(_bstr_t(vtProp.bstrVal));
  100. VariantClear(&vtProp);
  101. }
  102. pClassObject->Release();
  103. }
  104.  
  105. pEnumerator->Release();
  106. pSvc->Release();
  107. pLoc->Release();
  108. CoUninitialize();
  109.  
  110. return serial.empty() ? "Hard disk serial number not found" : serial;
  111. }
  112.  
  113. string GetMACAddress() {
  114. IP_ADAPTER_INFO adapterInfo[16];
  115. DWORD dwBufLen = sizeof(adapterInfo);
  116. if (GetAdaptersInfo(adapterInfo, &dwBufLen) == ERROR_SUCCESS) {
  117. for (int i = 0; i < (dwBufLen / sizeof(IP_ADAPTER_INFO)); i++) {
  118. if (adapterInfo[i].AddressLength == 6) {
  119. stringstream macAddress;
  120. for (int j = 0; j < 6; j++) {
  121. macAddress << hex << setw(2) << setfill('0') << (int)adapterInfo[i].Address[j];
  122. if (j != 5) macAddress << ":";
  123. }
  124. return macAddress.str();
  125. }
  126. }
  127. }
  128. return "MAC Address not found";
  129. }
  130.  
  131. string GetUUID() {
  132. IWbemLocator *pLoc = NULL;
  133. IWbemServices *pSvc = NULL;
  134. HRESULT hres;
  135. string uuid;
  136.  
  137. hres = CoInitializeEx(0, COINIT_MULTITHREADED);
  138. if (FAILED(hres)) {
  139. return "Failed to initialize COM library";
  140. }
  141.  
  142. hres = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
  143. RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
  144. if (FAILED(hres)) {
  145. CoUninitialize();
  146. return "Failed to initialize security";
  147. }
  148.  
  149. hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *)&pLoc);
  150. if (FAILED(hres)) {
  151. CoUninitialize();
  152. return "Failed to create IWbemLocator object";
  153. }
  154.  
  155. BSTR strNamespace = SysAllocString(L"ROOT\\CIMV2");
  156. hres = pLoc->ConnectServer(strNamespace, NULL, NULL, 0, NULL, 0, 0, &pSvc);
  157. SysFreeString(strNamespace);
  158.  
  159. if (FAILED(hres)) {
  160. pLoc->Release();
  161. CoUninitialize();
  162. return "Failed to connect to WMI";
  163. }
  164.  
  165. BSTR strQuery = SysAllocString(L"WQL");
  166. BSTR strSQL = SysAllocString(L"SELECT * FROM Win32_ComputerSystemProduct");
  167. IEnumWbemClassObject* pEnumerator = NULL;
  168. hres = pSvc->ExecQuery(strQuery, strSQL, WBEM_FLAG_FORWARD_ONLY, NULL, &pEnumerator);
  169. SysFreeString(strQuery);
  170. SysFreeString(strSQL);
  171.  
  172. if (FAILED(hres)) {
  173. pSvc->Release();
  174. pLoc->Release();
  175. CoUninitialize();
  176. return "Failed to query WMI for UUID information";
  177. }
  178.  
  179. IWbemClassObject *pClassObject;
  180. ULONG uReturn = 0;
  181. hres = pEnumerator->Next(WBEM_INFINITE, 1, &pClassObject, &uReturn);
  182. if (uReturn) {
  183. VARIANT vtProp;
  184. hres = pClassObject->Get(L"UUID", 0, &vtProp, 0, 0);
  185. if (SUCCEEDED(hres)) {
  186. uuid = string(_bstr_t(vtProp.bstrVal));
  187. VariantClear(&vtProp);
  188. }
  189. pClassObject->Release();
  190. }
  191.  
  192. pEnumerator->Release();
  193. pSvc->Release();
  194. pLoc->Release();
  195. CoUninitialize();
  196.  
  197. return uuid.empty() ? "UUID not found" : uuid;
  198. }
  199.  
  200. int main() {
  201. cout << "User Name: " << GetUserName() << endl;
  202. cout << "Computer Name: " << GetComputerName() << endl;
  203. cout << "Processor ID: " << GetProcessorID() << endl;
  204. cout << "Hard Disk Serial: " << GetHardDiskSerial() << endl;
  205. cout << "MAC Address: " << GetMACAddress() << endl;
  206. cout << "UUID: " << GetUUID() << endl;
  207.  
  208. return 0;
  209. }
  210.  
Tags: MS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement