// Summary: // Gets the True Last Logon date-time stamp for this Principal and the server on which the logon event occurred // // Returns: // The True Last Logon date-time stamp of the Principal and the server on which the logon event occurred // // Exceptions: // public TrueLastLogonResults GetTrueLastLogon(double timeoutSeconds) { var results = new TrueLastLogonResults(); var DCs = (from DomainController dc in Domain.GetComputerDomain().DomainControllers select dc.Name).ToList(); try { var threads = new Thread[DCs.Count]; for (var i = 0; i < threads.Count(); i++) { var tll = new ThreadedLastLogon {Dn = DistinguishedName, Dc = DCs[i]}; ParameterizedThreadStart starter = GetTrueLastLogonThreadWork; threads[i] = new Thread(starter); threads[i].Start(tll); } for (var i = 0; i < threads.Count(); i++) { try { threads[i].IsBackground = true; threads[i].Join(TimeSpan.FromSeconds(timeoutSeconds)); } catch { } } } catch (Exception e) { Console.WriteLine(e); } results.Server = _trueLastLogonServer; results.TrueLastLogon = _trueLastLogonDt; return results; }