public void ConsumeAndEnumerate(Object inq, Object outq, Object dsid) { EnumerationQueue <String> inQueue = (EnumerationQueue <String>)inq; EnumerationQueue <LocalAdminInfo> outQueue = (EnumerationQueue <LocalAdminInfo>)outq; string DomainSID = (string)dsid; while (true) { try { String host = inQueue.get(); if (host == null) { break; } List <LocalAdminInfo> results = LocalGroupAPI(host, "Administrators", DomainSID); if (results.Count == 0) { results = LocalGroupWinNT(host, "Administrators"); } foreach (LocalAdminInfo s in results) { outQueue.add(s); } } catch (Exception e) { Console.WriteLine(e); continue; } } }
public void Write(Object outq, Object cli) { int count = 0; EnumerationQueue <LocalAdminInfo> outQueue = (EnumerationQueue <LocalAdminInfo>)outq; Options o = (Options)cli; if (o.URI == null) { using (StreamWriter writer = new StreamWriter(o.GetFilePath("local_admins.csv"))) { writer.WriteLine("ComputerName,AccountName,AccountType"); while (true) { try { LocalAdminInfo info = outQueue.get(); if (info == null) { writer.Flush(); break; } writer.WriteLine(info.ToCSV()); count++; if (count % 1000 == 0) { Console.WriteLine("Local Admins Enumerated " + count); writer.Flush(); } } catch { continue; } } } } }