using System; using System.Reflection; using Microsoft.Win32; [assembly: AssemblyCompany("Ivasoft s.r.o.")] [assembly: AssemblyProduct("VisualStudioMock")] [assembly: AssemblyTitle("Visual Studio Mock for EAZfuscator")] [assembly: AssemblyVersion("1.0.0.0")] namespace VisualStudioMock { public class Program { [STAThread] public static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += (object sender, UnhandledExceptionEventArgs e) => Console.WriteLine("Exception: " + e.ExceptionObject); if (args.Length == 1) switch (args[0]) { case "/reg": using (RegistryKey regBase = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64)) using (RegistryKey regCoClass = regBase.CreateSubKey("CLSID\\{177F0C4A-1CD3-4DE7-A32C-71DBBB9FA36D}\\InprocServer32")) { regCoClass.SetValue("", "mscoree.dll"); regCoClass.SetValue("Class", "VisualStudioMock.SetupConfiguration"); regCoClass.SetValue("Assembly", "VisualStudioMock, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); regCoClass.SetValue("RuntimeVersion", "v4.0.30319"); regCoClass.SetValue("ThreadingModel", "Apartment"); regCoClass.SetValue("CodeBase", Assembly.GetExecutingAssembly().Location); } Console.WriteLine("Visual Studio Mock registered."); return; case "/unreg": using (RegistryKey regBase = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64)) { regBase.DeleteSubKey("CLSID\\{177F0C4A-1CD3-4DE7-A32C-71DBBB9FA36D}\\InprocServer32", throwOnMissingSubKey: false); regBase.DeleteSubKey("CLSID\\{177F0C4A-1CD3-4DE7-A32C-71DBBB9FA36D}\\LocalServer32", throwOnMissingSubKey: false); regBase.DeleteSubKey("CLSID\\{177F0C4A-1CD3-4DE7-A32C-71DBBB9FA36D}", throwOnMissingSubKey: false); } Console.WriteLine("Visual Studio Mock unregistered."); return; } Console.WriteLine("Usage: VisualStudioMock.exe [ /reg | /unreg ]"); return; } } }