public static void RegModify(RegistryAction r, Assembly curAssembly) { //Assembly curAssembly = Assembly.GetExecutingAssembly(); Microsoft.Win32.RegistryKey key; string keyVal = curAssembly.GetName().Name; string keyLocation = "\"" + curAssembly.Location + "\""; string resultMessage = string.Empty; try { switch (r) { case RegistryAction.CURRENT_USER_ADD_STARTUP: key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); key.SetValue(keyVal, keyLocation); resultMessage = "Successfully created key."; break; case RegistryAction.CURRENT_USER_REMOVE_STARTUP: key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); key.DeleteValue(keyVal, false); resultMessage = "Successfully removed key."; break; case RegistryAction.LOCAL_MACHINE_ADD_STARTUP: key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); key.SetValue(keyVal, keyLocation); resultMessage = "Successfully created key."; break; case RegistryAction.LOCAL_MACHINE_REMOVE_STARTUP: key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); key.DeleteValue(keyVal, false); resultMessage = "Successfully removed key."; break; } MessageBox.Show(resultMessage, "Windows Provider Host", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); } catch (System.Security.SecurityException se) { string message = se.Message + " To use this function, run the program as administrator"; MessageBox.Show(message, "Windows Provider Host", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); } catch (Exception e) { MessageBox.Show(e.Message, "Windows Provider Host", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); } }
private static IList <string> IterateAutocadProducts(RegistryAction action, params object[] objects) { var autocadInstances = new List <string>(); var autocadRootKey = Registry.LocalMachine.OpenSubKey(Constants.AutoCadRegistryKey, true); if (autocadRootKey != null) { var autocadVersionsNames = autocadRootKey.GetSubKeyNames(); foreach (var autocadVersionName in autocadVersionsNames) { var autocadVersion = autocadRootKey.OpenSubKey(autocadVersionName, true); if (autocadVersion != null) { var autocadProductNames = autocadVersion.GetSubKeyNames(); foreach (var autocadProductName in autocadProductNames) { var autocadProduct = autocadVersion.OpenSubKey(autocadProductName); if (autocadProduct != null) { var productApplications = autocadProduct.OpenSubKey(Constants.AutoCadApplicationsRegistryKeyName, true); if (action(productApplications, objects)) { autocadInstances.Add(autocadProduct.Name.Replace(@"HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\", "")); } } } } } } return(autocadInstances); }
public void TestRegistryAction() { /* * //just key test * var justkeyparams = new Dictionary<string, string>(); * justkeyparams.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest\addNewKey"); * var action = new RegistryAction(RegistryAction.RegistryCommand.Add, justkeyparams); * * * //binary value test * var bintestparamas2 = new Dictionary<string, string>(); * bintestparamas2.Add(RegistryAction.PARAM_NAME_KEY, @"HKCU\SOFTWARE\0hayktest"); * bintestparamas2.Add(RegistryAction.PARAM_NAME_VALUE, "newbinarytest"); * bintestparamas2.Add(RegistryAction.PARAM_NAME_TYPE, "REG_BINARY"); * bintestparamas2.Add(RegistryAction.PARAM_NAME_DATA, "0300000064A102EF4C3ED101"); * * var action1 = new RegistryAction(RegistryAction.RegistryCommand.Add, bintestparamas2); * * //binary value test * var bintestparamas = new Dictionary<string, string>(); * bintestparamas.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest\subpath"); * bintestparamas.Add(RegistryAction.PARAM_NAME_VALUE, "newbinarytest"); * bintestparamas.Add(RegistryAction.PARAM_NAME_TYPE, "REG_BINARY"); * bintestparamas.Add(RegistryAction.PARAM_NAME_DATA, "2324250A"); * * var action2 = new RegistryAction(RegistryAction.RegistryCommand.Add, bintestparamas); * * //int value test * var inttestparamas = new Dictionary<string, string>(); * inttestparamas.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest"); * inttestparamas.Add(RegistryAction.PARAM_NAME_VALUE, "newinttest"); * inttestparamas.Add(RegistryAction.PARAM_NAME_TYPE, "REG_DWORD"); * inttestparamas.Add(RegistryAction.PARAM_NAME_DATA, "9992"); * * var action3 = new RegistryAction(RegistryAction.RegistryCommand.Add, inttestparamas); * * //string value test * var stringtestparamas = new Dictionary<string, string>(); * stringtestparamas.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest"); * stringtestparamas.Add(RegistryAction.PARAM_NAME_VALUE, "newstringtest"); * stringtestparamas.Add(RegistryAction.PARAM_NAME_TYPE, "REG_SZ"); * stringtestparamas.Add(RegistryAction.PARAM_NAME_DATA, "test1"); * * var action4 = new RegistryAction(RegistryAction.RegistryCommand.Add, stringtestparamas); * * * Log("Add key result: " + action.Execute()); * Log("Add binay 1 result: " + action1.Execute()); * Log("Add binay result: " + action2.Execute()); * Log("Add dword result: " + action3.Execute()); * Log("Add string result: " + action4.Execute()); * * //delete existing key w/ children * var delkeytest = new Dictionary<string, string>(); * delkeytest.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\1hayktest"); * var action5 = new RegistryAction(RegistryAction.RegistryCommand.DeleteKey, delkeytest); * * //delete existing key w/o children * var delkeytestNoch = new Dictionary<string, string>(); * delkeytestNoch.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest\more1"); * var action5Plus = new RegistryAction(RegistryAction.RegistryCommand.DeleteKey, delkeytestNoch); * * //delete non-existent key * var delkeytest2 = new Dictionary<string, string>(); * delkeytest2.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\nonexistentkey"); * var action6 = new RegistryAction(RegistryAction.RegistryCommand.DeleteKey, delkeytest2); * * //delete existing value * var delvaltest1 = new Dictionary<string, string>(); * delvaltest1.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest"); * delvaltest1.Add(RegistryAction.PARAM_NAME_VALUE, "inttest"); * var action7 = new RegistryAction(RegistryAction.RegistryCommand.DeleteValue, delvaltest1); * * //delete non-existent value * var delvaltest2 = new Dictionary<string, string>(); * delvaltest2.Add(RegistryAction.PARAM_NAME_KEY, @"HKLM\SOFTWARE\0hayktest"); * delvaltest2.Add(RegistryAction.PARAM_NAME_VALUE, "blabla"); * var action8 = new RegistryAction(RegistryAction.RegistryCommand.DeleteValue, delvaltest2); * * //Log("key test: " + Enum.GetName(typeof(Action_.StatusResult), action.CheckStatus())); * //Log("binary val test: " + Enum.GetName(typeof(Action_.StatusResult), action2.CheckStatus())); * //Log("int val test: " + Enum.GetName(typeof(Action_.StatusResult), action3.CheckStatus())); * //Log("string val test: " + Enum.GetName(typeof(Action_.StatusResult), action4.CheckStatus())); * * Log("delete key that exists and has children: " + action5.Execute()); * Log("delete key that exists and has no children: " + action5Plus.Execute()); * Log("delete key that doesn't exist: " + action6.Execute()); * Log("delete value that exists: " + action7.Execute()); * Log("delete value that doesn't exist: " + action8.Execute()); * */ //load/ unload tests var loadtest = new Dictionary <string, string>(); loadtest.Add(RegistryAction.PARAM_NAME_KEY, @"HKU\temp"); loadtest.Add(RegistryAction.PARAM_NAME_FILENAME, @"%USERPROFILE%\..\Default User\NTUSER.DAT"); var action = new RegistryAction(RegistryAction.RegistryCommand.Load, loadtest); var unloadtest = new Dictionary <string, string>(); unloadtest.Add(RegistryAction.PARAM_NAME_KEY, @"HKU\temp"); var action2 = new RegistryAction(RegistryAction.RegistryCommand.Unload, unloadtest); Log("Unload when not yet loaded: " + action2.Execute()); Log("Load when not yet loaded: " + action.Execute()); Log("Load when already loaded: " + action.Execute()); Log("Unload when loaded: " + action2.Execute()); }