CString COcsNotifyUserApp::getVersion() { CFileVersion fileVer; CString myVer; // Get application path if (GetModuleFileName( AfxGetInstanceHandle(), myVer.GetBuffer( 4*_MAX_PATH+1), 4*_MAX_PATH) == 0) return _T( ""); myVer.ReleaseBuffer(); // Open application file to get version from file if (fileVer.Open( myVer)) { myVer = fileVer.GetProductVersion(); myVer.Remove( ' '); myVer.Replace( _T( ","), _T( ".")); fileVer.Close(); } else myVer.Empty(); return myVer; }
BOOL COcsSystrayDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // Set link to OCS Web site m_HLink.SetLinkUrl( _T( "http://www.ocsinventory-ng.org")); // Set agent version CFileVersion fileVer; CString csMessage; // Service version csMessage.Format( _T( "%s\\ocsservice.exe"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "Service version unknown"); SetDlgItemText( IDC_VERSION_SERVICE, csMessage); // Agent version csMessage.Format( _T( "%s\\ocsinventory.exe"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "Agent version unknown"); SetDlgItemText( IDC_VERSION_AGENT, csMessage); // Download version csMessage.Format( _T( "%s\\download.exe"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "Package Download and Setup Tool version unknown"); SetDlgItemText( IDC_VERSION_DOWNLOAD, csMessage); // Framework version csMessage.Format( _T( "%s\\OCSInventory Front.dll"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "Framework Provider version unknown"); SetDlgItemText( IDC_VERSION_FRAMEWORK, csMessage); // Sysinfo version csMessage.Format( _T( "%s\\sysinfo.dll"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "System Provider version unknown"); SetDlgItemText( IDC_VERSION_SYSINFO, csMessage); // WMI version csMessage.Format( _T( "%s\\ocswmi.dll"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "WMI Provider version unknown"); SetDlgItemText( IDC_VERSION_WMI, csMessage); // Com Provider version csMessage.Format( _T( "%s\\%s"), getInstallFolder(), OCS_DEFAULT_PROVIDER); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "Communication Provider version unknown"); SetDlgItemText( IDC_VERSION_COM_PROVIDER, csMessage); // Notification Provider version csMessage.Format( _T( "%s\\OcsNotifyUser.exe"), getInstallFolder()); if (fileVer.Open( csMessage)) { csMessage.Format( _T( "%s version %s"), fileVer.GetFileDescription(), fileVer.GetFixedFileVersion()); fileVer.Close(); } else csMessage = _T( "User Notification Provider version unknown"); SetDlgItemText( IDC_VERSION_NOTIFICATION, csMessage); // Get service status IsServiceRunning( csMessage); SetDlgItemText( IDC_SERVICE_STATUS, csMessage); // Set tray icon csMessage.LoadString( AFX_IDS_APP_TITLE); m_iconTray.Create( NULL, WM_SYSTRAY_ICON_NOTIFY, csMessage, m_hIcon, IDR_MAINFRAME, FALSE); m_iconTray.SetCallbackMessage( IDC_SYSTRAY_DISPLAY); CSystemTray::MinimiseToTray( this); // Start timer to refresh service status SetTimer( ID_SYSTRAY_ICON, 5000, NULL); return TRUE; // return TRUE unless you set the focus to a control }
BOOL CComProvider::load(LPCTSTR lpstrProvider) { CLog *pLogger = getOcsLogger(); try { CFileVersion fileVer; unload(); pLogger->log( LOG_PRIORITY_DEBUG, _T( "COM PROVIDER => Loading Communication Provider <%s>"), lpstrProvider); if ((m_hComProvider = LoadLibrary( lpstrProvider)) == NULL) { pLogger->log( LOG_PRIORITY_WARNING, _T( "COM PROVIDER => Unable to load library <%s>, %s"), lpstrProvider, LookupError( GetLastError())); return FALSE; } if ((m_pNewServerConfig = (NEW_SERVER_CONFIG_OBJECT)GetProcAddress( m_hComProvider, "newServerConfig")) == NULL) { pLogger->log( LOG_PRIORITY_WARNING, _T( "COM PROVIDER => No newServerConfig hook for Communication Provider <%s>, %s"), lpstrProvider, LookupError( GetLastError())); FreeLibrary( m_hComProvider); return FALSE; } if ((m_pDeleteServerConfig = (DELETE_SERVER_CONFIG_OBJECT)GetProcAddress( m_hComProvider, "deleteServerConfig")) == NULL) { pLogger->log( LOG_PRIORITY_WARNING, _T( "COM PROVIDER => No deleteServerConfig hook for Communication Provider <%s>, %s"), lpstrProvider, LookupError( GetLastError())); FreeLibrary( m_hComProvider); return FALSE; } if ((m_pNewServerConnexion = (NEW_SERVER_OBJECT)GetProcAddress( m_hComProvider, "newServerConnexion")) == NULL) { pLogger->log( LOG_PRIORITY_WARNING, _T( "COM PROVIDER => No newServerConnexion hook for Communication Provider <%s>, %s"), lpstrProvider, LookupError( GetLastError())); FreeLibrary( m_hComProvider); return FALSE; } if ((m_pDeleteServerConnexion = (DELETE_SERVER_OBJECT)GetProcAddress( m_hComProvider, "deleteServerConnexion")) == NULL) { pLogger->log( LOG_PRIORITY_WARNING, _T( "COM PROVIDER => No deleteServerConnexion hook for Communication Provider <%s>, %s"), lpstrProvider, LookupError( GetLastError())); FreeLibrary( m_hComProvider); return FALSE; } // Open application file to get version from file if (fileVer.Open( lpstrProvider)) { m_csName = fileVer.GetFileDescription(); m_csVersion = fileVer.GetFixedFileVersion(); fileVer.Close(); } else { m_csName = _T( "N/A"); m_csVersion = _T( "N/A"); } return TRUE; } catch (CException *pEx) { pLogger->log( LOG_PRIORITY_WARNING, _T( "COM PROVIDER => Error while loading provider DLL <%s>, %s"), lpstrProvider, LookupError( pEx)); pEx->Delete(); return FALSE; } }
BOOL CConsumer::ConsumerProcessTrace(TRACEHANDLE hTrace, DWORD processId, LPWSTR logFilePath) { // HRESULT hr = ConnectToETWNameSpace(_bstr_t(L"root\\wmi")); // if(FAILED(hr)) // { // wprintf(L"ConnectoETWNameSpace failed with 0x%x\r\n", hr); // } m_logFilePath = logFilePath; m_processId = processId; SymSetOptions(SYMOPT_DEBUG); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE, m_processId); if(hProcess == NULL) { wprintf(L"OpenProcess Failed with %lu\r\n", GetLastError()); } else { HMODULE hMod[1024]; DWORD cbNeeded; TCHAR szModName[MAX_PATH] = {0}; std::string pdbSerchPath = "\\\\192.168.14.181\\public\\symbols\\"; std::string finalSearchPath = "d:\\symbolslocal"; if(EnumProcessModules(hProcess, hMod, sizeof(hMod), &cbNeeded)) { for(int i = 0; i < cbNeeded / sizeof(HMODULE); ++i) { pdbSerchPath = "\\\\192.168.14.181\\public\\symbols\\"; ZeroMemory(szModName, sizeof(szModName)); if(GetModuleFileNameEx(hProcess, hMod[i], szModName, sizeof(szModName))) { CFileVersion fileVer; if(fileVer.Open(szModName)) { CString strVer = fileVer.GetFixedProductVersion(); std::wstring modName = szModName; DWORD index = modName.rfind(L'\\'); DWORD suffixIndex = modName.rfind(L'.'); if(index) { modName = modName.substr(index+1,suffixIndex - index -1); } modName += L"\\"; modName += strVer.GetBuffer(); strVer.ReleaseBuffer(); char modPdbPath[MAX_PATH] = {0}; WideCharToMultiByte(CP_ACP,0, modName.c_str(), -1, modPdbPath, MAX_PATH, NULL, FALSE); pdbSerchPath += modPdbPath; if(PathFileExistsA(pdbSerchPath.c_str())) { finalSearchPath = finalSearchPath + ";" + pdbSerchPath; } } } } finalSearchPath = finalSearchPath + ";" + "\\\\192.168.14.181\\public\\symbols\\Thunder\\7.9.19.4736"; BOOL bRet = SymInitialize ( hProcess, // Process handle finalSearchPath.c_str(), // user-defined search path -> use default TRUE // load symbols for modules in the current process ); m_processHandle = hProcess; } //std::string pdbSerchPath = "\\\\192.168.14.181\\public\\symbols\\Thunder\\7.9.19.4736;D:\\develop\\thunder\\pdb\\Release"; } ULONG status = ProcessTrace(&hTrace, 1, 0, 0); if(ERROR_SUCCESS != status && ERROR_CANCELLED != status) { wprintf(L"ProcessTrace failed with %u\r\n", status); } else { OutputResult(); } //CoUninitialize(); return TRUE; }