示例#1
0
        public static object GetRegistryValue(string keyName, string valueName, RegistryViewEx view = RegistryViewEx.Default)
        {
            if (view == RegistryViewEx.Registry64 && !Is64BitOperatingSystem)
            {
                return(null);
            }

            string str;

            RegistryKeyEx key2 = GetBaseKeyFromKeyName(keyName, out str).OpenSubKey(str, view);

            if (key2 == null)
            {
                return(null);
            }

            object obj2;

            try
            {
                obj2 = key2.GetValue(valueName);
            }
            finally
            {
                key2.Close();
            }

            if (obj2 == null)
            {
                return(null);
            }

            return(obj2);
        }
示例#2
0
        public static object GetRegistryValue(RegistryKeyEx hive, string keyName, string valueName, RegistryViewEx view = RegistryViewEx.Default)
        {
            if (view == RegistryViewEx.Registry64 && !Is64BitOperatingSystem)
            {
                return(null);
            }

            RegistryKeyEx key2 = hive.OpenSubKey(keyName, view);

            if (key2 == null)
            {
                return(null);
            }

            object obj2;

            try
            {
                obj2 = key2.GetValue(valueName);
            }
            finally
            {
                key2.Close();
            }

            if (obj2 == null)
            {
                return(null);
            }

            return(obj2);
        }
示例#3
0
        private static RegistryKeyEx GetBaseKeyFromKeyName(string keyName, out string subKeyName)
        {
            string str;

            if (keyName == null)
            {
                throw new ArgumentNullException("keyName");
            }

            int index = keyName.IndexOf('\\');

            if (index != -1)
            {
                str = keyName.Substring(0, index).ToUpper(CultureInfo.InvariantCulture);
            }
            else
            {
                str = keyName.ToUpper(CultureInfo.InvariantCulture);
            }

            RegistryKeyEx currentUser = null;

            switch (str)
            {
            case "HKEY_CURRENT_USER":
                currentUser = CurrentUser;
                break;

            case "HKEY_LOCAL_MACHINE":
                currentUser = LocalMachine;
                break;

            case "HKEY_CLASSES_ROOT":
                currentUser = ClassesRoot;
                break;

            case "HKEY_USERS":
                currentUser = Users;
                break;

            default:
                throw new ArgumentException("Invalid keyName");
            }

            if ((index == -1) || (index == keyName.Length))
            {
                subKeyName = string.Empty;
                return(currentUser);
            }
            subKeyName = keyName.Substring(index + 1, (keyName.Length - index) - 1);
            return(currentUser);
        }
示例#4
0
        public static bool SetValue(string keyName, string valueName, object value, RegistryViewEx view = RegistryViewEx.Default)
        {
            string str;

            RegistryKeyEx key2 = GetBaseKeyFromKeyName(keyName, out str).OpenWritableSubKey(str, view);

            if (key2 == null)
            {
                return(false);
            }

            bool ret = false;

            try
            {
                ret = key2.SetValue(valueName, value);
            }
            finally
            {
                key2.Close();
            }

            return(ret);
        }