示例#1
0
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;
}
示例#2
0
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
}
示例#3
0
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;
    }
}
示例#4
0
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;
}