同一用户的注册表项中HKEY_USERS中的两个键值

时间:2012-10-24 07:47:47

标签: c# registry

我在同一用户的注册表项中有两个HKEY_USERS帐户。

这些是:

HKEY_USERS \ S-1-5-21-507921405-1993962763-682003330-1012

HKEY_USERS \ S-1-5-21-507921405-1993962763-682003330-1014

当我使用Registry.CurrentUser.OpenSubKey()方法获取当前用户的值时出现问题。 它从HKEY_USERS \ S-1-5-21-507921405-1993962763-682003330-1012获取值,而HKEY_CURRENT_USER与HKEY_USERS \ S-1-5-21-507921405-1993962763-682003330-1014映射(或同步)。 因此不会获取实际值。在这种情况下,有人可以帮助我解决为什么同一用户的注册表中存在两个帐户以及如何为HKEY_CURRENT_USER映射(或执行同步)

HKEY_USERS \ S-1-5-21-507921405-1993962763-682003330-1014。

我的代码如下:

    string strKeyIESettings = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges";
        string valRange1 = "", valRange2 = "", valRange3 = "", valRange4 = "";
        using (Microsoft.Win32.RegistryKey keyIESettings = Registry.CurrentUser.OpenSubKey(strKeyIESettings))
        {
            foreach (string subkey_name in keyIESettings.GetSubKeyNames())
            {
                using (RegistryKey subkey = keyIESettings.OpenSubKey(subkey_name))
                {
                    switch (subkey_name)
                    {
                        case "Range1" :
                            if (subkey.GetValue(":Range") != null)
                            {
                                valRange1 = subkey.GetValue(":Range").ToString();
                            }                                
                            break;

                        case "Range2" :
                            if (subkey.GetValue(":Range") != null)
                            {
                                valRange2 = subkey.GetValue(":Range").ToString();
                            }                                
                            break;

                        case "Range3":
                            if (subkey.GetValue(":Range") != null)
                            {
                                valRange3 = subkey.GetValue(":Range").ToString();
                            }
                            break;

                        case "Range4":
                            if (subkey.GetValue(":Range") != null)
                            {
                                valRange4 = subkey.GetValue(":Range").ToString();
                            }
                            break;

                        default:
                            break;
                    }
                }
            }
        }

        if (valRange1 == "10.237.24.165" && valRange2 == "10.237.24.166" && valRange3 == "10.237.24.167" && valRange4 == "10.237.24.168")
        {
            flagIESettings = true;
        }

我必须将这些值作为我的应用程序先决条件获取。

1 个答案:

答案 0 :(得分:0)

我找到了上述问题的解决方案。它如下: 我在同一用户的注册表项中有两个HKEY_USERS帐户,因为我已经安装了ASP.NET。 一个帐户适用于ASP.NET 和其他人是我现在的用户。 当ASP.NET安装在用户的计算机上时总是如此,注册表中的当前用户有两个帐户。一个与HKCU映射。

由于