internal static X509Certificate2 Prepare(string[] args) { const string installArgument = "--install-certificate"; if (args?.FirstOrDefault() == installArgument) { AdminUtils.RewireConsoleOut <Program>(); return(Install()); } Console.Write("Preparing certificate ... "); X509Certificate2 testCertificate = Find(StoreName.My); if (testCertificate != null) { Console.WriteLine("Found"); return(testCertificate); } Console.WriteLine("Missing"); Console.WriteLine(); Console.WriteLine("Installing certificate ... "); if (AdminUtils.IsAdministrator()) { testCertificate = Install(); Console.WriteLine("Done."); } else { AdminUtils.RunAsAdministrator <Program>(installArgument); testCertificate = Find(StoreName.My); Console.WriteLine(testCertificate != null ? "Done." : "Failed."); } return(testCertificate); }