private static DateTime?GetUsersLogonTimestamp(DprCurrentUsers user) { if (string.IsNullOrEmpty(user.UserName) || string.IsNullOrEmpty(user.Domain) || Win32.WellKnownSids.ContainsKey(user.Sid)) { return(null); } WmiHelpers.ForEachWithScope(user.ComputerName, @"SELECT * FROM Win32_LogonSession", (obj, scope) => { try { var roq = new RelatedObjectQuery(string.Format(@"associators of {{Win32_LogonSession.LogonId='{0}'}} WHERE AssocClass = Win32_LoggedOnUser", WmiHelpers.GetString(obj, @"LogonId"))); using (var searcher = new ManagementObjectSearcher(scope, roq)) { foreach (var mobObj in searcher.Get( )) { Helpers.AssertNotNull(mobObj, @"WMI Error, null value returned."); var mob = (ManagementObject)mobObj; var name = WmiHelpers.GetString(mob, @"Name"); var domain = WmiHelpers.GetString(mob, @"Domain"); if (!name.Equals(user.UserName) || !domain.Equals(user.Domain)) { continue; } user.LastLogon = WmiHelpers.GetNullableDate(obj, @"StartTime"); return(false); // Found, stop loop } } } catch (ManagementException ex) { GlobalLogging.WriteLine(Logging.LogSeverity.Error, @"Error finding last logon on {0} for {1}\{2}\n{3}", user.ComputerName, user.Domain, user.UserName, ex.Message); } return(true); }, false, false); return(user.LastLogon); }
public static void Generate(string computerName, SyncList <DprNetworkInfo> result) { Helpers.AssertNotNull(result, @"result SyncList cannot be null"); Helpers.AssertString(computerName, @"Computer name cannot be empty"); var networkInfoList = new List <DprNetworkInfo>( ); try { WmiHelpers.ForEach(computerName, @"SELECT * FROM Win32_NetworkAdapterConfiguration", obj => { var ci = new DprNetworkInfo(computerName); ci.DefaultIpGateway = WmiHelpers.GetStringArray(obj, @"DefaultIPGateway"); ci.Description = WmiHelpers.GetString(obj, @"Description"); ci.DhcpEnabled = WmiHelpers.GetBoolean(obj, @"DHCPEnabled"); ci.DhcpLeaseExpires = WmiHelpers.GetNullableDate(obj, @"DHCPLeaseExpires", true); ci.DhcpLeaseObtained = WmiHelpers.GetNullableDate(obj, @"DHCPLeaseObtained", true); ci.DhcpServer = WmiHelpers.GetString(obj, @"DHCPServer"); ci.DnsDomain = WmiHelpers.GetString(obj, @"DNSDomain"); ci.DnsDomainSuffixSearchOrder = WmiHelpers.GetStringArray(obj, @"DNSDomainSuffixSearchOrder"); ci.DnsEnabledForWinsResolution = WmiHelpers.GetNullableBoolean(obj, @"DNSEnabledForWINSResolution"); ci.DnsHostName = WmiHelpers.GetString(obj, @"DNSHostName"); ci.DnsServerSearchOrder = WmiHelpers.GetStringArray(obj, @"DNSServerSearchOrder"); ci.DomainDnsRegistrationEnabled = WmiHelpers.GetNullableBoolean(obj, @"DomainDNSRegistrationEnabled"); ci.FullDnsRegistrationEnabled = WmiHelpers.GetNullableBoolean(obj, @"FullDNSRegistrationEnabled"); ci.Index = WmiHelpers.GetUInt(obj, @"Index"); ci.InterfaceIndex = WmiHelpers.GetUInt(obj, @"InterfaceIndex"); ci.IpAddress = WmiHelpers.GetStringArray(obj, @"IPAddress"); ci.IpConnectionMetric = WmiHelpers.GetNullableUInt(obj, @"IPConnectionMetric"); ci.IpEnabled = WmiHelpers.GetNullableBoolean(obj, @"IPEnabled"); ci.MacAddress = WmiHelpers.GetString(obj, @"MACAddress"); ci.SettingId = WmiHelpers.GetString(obj, @"SettingID"); ci.WinsEnableLmHostsLookup = WmiHelpers.GetNullableBoolean(obj, @"WINSEnableLMHostsLookup"); ci.WinsHostLookupFile = WmiHelpers.GetString(obj, @"WINSHostLookupFile"); ci.WinsPrimaryServer = WmiHelpers.GetString(obj, @"WINSPrimaryServer"); ci.WinsSecondaryServer = WmiHelpers.GetString(obj, @"WINSSecondaryServer"); ci.WinsScopeId = WmiHelpers.GetString(obj, @"WINSScopeID"); networkInfoList.Add(ci); return(true); }, true, false); } catch (UnauthorizedAccessException) { result.Add(new DprNetworkInfo(computerName, ConnectionStatuses.AuthorizationError)); return; } catch (Exception) { result.Add(new DprNetworkInfo(computerName, ConnectionStatuses.Error)); return; } result.AddRange(networkInfoList); ValidateUniqueness(result); }
public static void Generate(string computerName, SyncList.SyncList <DprComputerInfo> result) { Helpers.AssertNotNull(result, @"result SyncList cannot be null"); Helpers.AssertString(computerName, @"Computer name cannot be empty"); var ci = new DprComputerInfo(computerName) { LocalSystemDateTime = DateTime.Now }; try { WmiHelpers.ForEach(computerName, @"SELECT * FROM Win32_OperatingSystem WHERE Primary=TRUE", obj => { ci.LastBootTime = WmiHelpers.GetNullableDate(obj, @"LastBootUpTime"); ci.SystemTime = WmiHelpers.GetNullableDate(obj, @"LocalDateTime"); ci.Version = WmiHelpers.GetString(obj, @"Caption"); ci.Architecture = WmiHelpers.GetString(obj, @"OSArchitecture"); ci.InstallDate = WmiHelpers.GetNullableDate(obj, @"InstallDate"); return(true); }); WmiHelpers.ForEach(computerName, @"SELECT * FROM Win32_BIOS", obj => { ci.Manufacturer = WmiHelpers.GetString(obj, @"Manufacturer"); ci.HwReleaseDate = WmiHelpers.GetNullableDate(obj, @"ReleaseDate"); ci.SerialNumber = WmiHelpers.GetString(obj, @"SerialNumber"); ci.BiosVersion = WmiHelpers.GetString(obj, @"SMBIOSBIOSVersion"); return(true); }); WmiHelpers.ForEach(computerName, @"SELECT * FROM Win32_ComputerSystem", obj => { ci.Model = WmiHelpers.GetString(obj, @"Model"); ci.TotalPhysicalMemory = WmiHelpers.GetUInt(obj, @"TotalPhysicalMemory"); return(true); }); } catch (UnauthorizedAccessException uae) { GlobalLogging.WriteLine(Logging.LogSeverity.Error, @"Exception - {0} - {1}", uae.TargetSite, uae.Message); ci.ConnectionStatus = ConnectionStatuses.AuthorizationError; } catch (Exception ex) { GlobalLogging.WriteLine(Logging.LogSeverity.Error, @"Exception - {0} - {1}", ex.TargetSite, ex.Message); ci.ConnectionStatus = ConnectionStatuses.Error; } result.Add(ci); ValidateUniqueness(result); }