示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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());
        }