|
Вход и выход из системы удаленной машины.
#38781251
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
Добрый вечер, коллеги!
Помогите куда копать дальше.
Необходимо из машины в локальной сети извлечь информацию о входе и выходе из системы пользователя.
Для этого использую Win32_LogonSession.
Не устраивает то, что этот класс хранит данные только во время работы, после выключения он стирается.
Может есть какие-то журналы в системе по истории входа и выхода?
Или более информативные классы.
Гугление не помогает.
Кусок программы С++:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192.
hres = pLoc->ConnectServer(
_bstr_t(L"\\\\178.207.130.146\\root\\cimv2"),
NULL, // User name
NULL, // User password
NULL, // Locale
NULL, // Security flags
NULL, // Authority
NULL, // Context object
&pSvc // IWbemServices proxy
);
if (FAILED(hres))
{
cout << "Could not connect. Error code = 0x" << hex << hres << endl;
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Step 6: --------------------------------------------------
// Set security levels on a WMI connection ------------------
hres = CoSetProxyBlanket(
pSvc, // Indicates the proxy to set
RPC_C_AUTHN_DEFAULT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_DEFAULT, // RPC_C_AUTHZ_xxx
COLE_DEFAULT_PRINCIPAL, // Server principal name
RPC_C_AUTHN_LEVEL_PKT_PRIVACY, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
);
if (FAILED(hres))
{
cout << "Could not set proxy blanket. Error code = 0x" << hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Step 7: --------------------------------------------------
// Use the IWbemServices pointer to make requests of WMI ----
IEnumWbemClassObject* pEnumerator = NULL;
IWbemClassObject *pclsObj = NULL;
ULONG uReturn = 0;
// Cleanup
//pEnumerator->Release();
//++++++++++++++++++++++++++++++++++++++++
cout << "++++++++++++++++++++++++++++++++" << endl;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * from Win32_LogonSession"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
if (FAILED(hres))
{
cout << "Query for operating system name failed." << " Error code = 0x" << hex << hres << endl;
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Step 8: -------------------------------------------------
// Secure the enumerator proxy
hres = CoSetProxyBlanket(
pEnumerator, // Indicates the proxy to set
RPC_C_AUTHN_DEFAULT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_DEFAULT, // RPC_C_AUTHZ_xxx
COLE_DEFAULT_PRINCIPAL, // Server principal name
RPC_C_AUTHN_LEVEL_PKT_PRIVACY, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
);
if (FAILED(hres))
{
cout << "Could not set proxy blanket on enumerator. Error code = 0x" << hex << hres << endl;
pEnumerator->Release();
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1; // Program has failed.
}
// Step 9: -------------------------------------------------
// Get the data from the query in step 7 -------------------
pclsObj = NULL;
uReturn = 0;
//pEnumerator->;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
if(0 == uReturn)
{
break;
}
/*
[Provider("CIMWin32")]class Win32_LogonSession : Win32_Session
{
string AuthenticationPackage;
string Caption;
string Description;
datetime InstallDate;
string LogonId;
uint32 LogonType;
string Name;
datetime StartTime;
string Status;
};
*/
VARIANT vtProp1;
VARIANT vtProp2;
VARIANT vtProp3;
VARIANT vtProp4;
VARIANT vtProp5;
VARIANT vtProp6;
VARIANT vtProp7;
VARIANT vtProp8;
VARIANT vtProp9;
wcout << " ####################### " << endl;
wcout << " ####################### " << endl;
hr = pclsObj->Get(L"AuthenticationPackage", 0, &vtProp1, 0, 0);
wcout << " AuthenticationPackage: " << vtProp1.bstrVal << endl;
VariantClear(&vtProp1);
hr = pclsObj->Get(L"Caption", 0, &vtProp2, 0, 0);
wcout << " Caption: " << vtProp2.cVal << endl;
VariantClear(&vtProp2);
hr = pclsObj->Get(L"Description", 0, &vtProp3, 0, 0);
wcout << " Description: " << vtProp3.cVal << endl;
VariantClear(&vtProp3);
hr = pclsObj->Get(L"InstallDate", 0, &vtProp4, 0, 0);
wcout << " InstallDate: " << vtProp4.uintVal << endl;
VariantClear(&vtProp4);
hr = pclsObj->Get(L"LogonId", 0, &vtProp5, 0, 0);
wcout << " LogonId: " << vtProp5.uintVal << endl;
VariantClear(&vtProp5);
hr = pclsObj->Get(L"LogonType", 0, &vtProp6, 0, 0);
wcout << " LogonType: " << vtProp6.iVal << endl;
VariantClear(&vtProp6);
hr = pclsObj->Get(L"Name", 0, &vtProp7, 0, 0);
wcout << " Name: " << vtProp7.cVal << endl;
VariantClear(&vtProp7);
hr = pclsObj->Get(L"StartTime", 0, &vtProp8, 0, 0);
wcout << " StartTime: " << _wtoi64(vtProp8.bstrVal) << endl;
VariantClear(&vtProp8);
hr = pclsObj->Get(L"Status", 0, &vtProp9, 0, 0);
wcout << " Status: " << vtProp9.iVal << endl;
VariantClear(&vtProp9);
pclsObj->Release();
pclsObj = NULL;
}
if( pclsObj )
{
pclsObj->Release();
}
// Cleanup
pEnumerator->Release();
Вывод:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
++++++++++++++++++++++++++++++++
#######################
#######################
AuthenticationPackage: NTLM
Caption: ╠
Description: ╠
InstallDate: 3435973836
LogonId: 1528868
LogonType: 0
Name: ╠
StartTime: 20141019160054
Status: -13108
#######################
#######################
AuthenticationPackage: Negotiate
Caption: ╠
Description: ╠
InstallDate: 3435973836
LogonId: 1528868
LogonType: 5
Name: ╠
StartTime: 20141019160054
Status: -13108
#######################
#######################
AuthenticationPackage: Negotiate
Caption: ╠
Description: ╠
InstallDate: 3435973836
LogonId: 1528868
LogonType: 5
Name: ╠
StartTime: 20141019160054
Status: -13108
#######################
#######################
AuthenticationPackage: NTLM
Caption: ╠
Description: ╠
InstallDate: 3435973836
LogonId: 1528868
LogonType: 2
Name: ╠
StartTime: 20141019160055
Status: -13108
#######################
#######################
AuthenticationPackage: NTLM
Caption: ╠
Description: ╠
InstallDate: 3435973836
LogonId: 1535524
LogonType: 3
Name: ╠
StartTime: 20141019160202
Status: -13108
|
|
|