/// <summary> /// Thread function to collect wmi data /// </summary> /// <param name="param">receives the machine name or ip for data collecton</param> private void CollectWMIData(object param) { string hostname = (string)param; _logger.Info("wmi data collection started for machine " +hostname); DiscoverDb _disDb = new DiscoverDb(); EntDiscover machinedetails = _disDb.GetMachineDetails(hostname); CredentialDB _credDb = new CredentialDB(); EntCredential _cred = _credDb.GetCredential(machinedetails.CredentialID); _credDb.CloseConnection(); _credDb = null; string _UserName = null; string _Password = null; if ( _cred != null) { _UserName = _cred.Username; _Password = _cred.Password; } FireStatusMessage(NAMString.ResourceFormatter.CONTROLLER_STATUS_MESSAGE_WMICOLLECT()+" "+hostname); WMIHandler objHandler = new WMIHandler(machinedetails.MachineName, _UserName, _Password); EntScan scan = new EntScan(); if ( objHandler.IsWmiInitialized == true ) { scan.MachineID = machinedetails.MachineID; ScanDb _scandb = new ScanDb(); int scanID = _scandb.InsertScan(scan); _scandb.CloseConnection(); _scandb = null; EntityDb entityDb = new EntityDb(); FireStatusMessage(hostname+" : "+ NAMString.ResourceFormatter.CONTROLLER_STATUS_MESSAGE_PROCESSOR()); foreach (EntProcessor pro in objHandler.GetProcessorDetails()) { pro.ScanID = scanID; //procDb.InsertProcessor(pro); entityDb.Insert(pro); } foreach (EntSoftwares lSoftware in objHandler.GetInstalledSoftwareDetails()) { lSoftware.ScanID = scanID; entityDb.Insert(lSoftware); } entityDb.CloseConnection(); entityDb = null; _disDb.UpdateLastScan(scan.MachineID, scan.Date); machinedetails.Discovered = true; machinedetails.StatusMessage = NAMString.ResourceFormatter.CONTROLLER_STATUS_MESSAGE_SCANCOMPLETE(); } else { _logger.Error("WMI not initialized for machine <" + hostname+">"); machinedetails.StatusMessage = "wmi initialization failure"; machinedetails.Discovered = false; } machinedetails.LastChecked = DateTime.Now; _disDb.UpdateDiscover(machinedetails); if ( ScanComplete!=null) { ScanComplete(this, machinedetails.MachineName); } FireStatusMessage("Scan complete"); _disDb.CloseConnection(); _disDb = null; }