0

次のキーの値を確認したい:-

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range1] 
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range2]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range3]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range4]

プロジェクトの前提条件として必要な「securityNT.reg」という名前の .reg ファイルを実行すると、これらのキーの値が更新されるため、これが必要です。これらのキーに信頼済みサイトの値が含まれていることは承知しています。

これらの値を取得するために次のコードを使用しています。

bool flagIESettings = false;
    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;
        } 

Registry.CurrentUser を使用して値を取得していますがHKEY_CURRENT_USER、このオブジェクト (keyISettings) は から値を取得していますHKEY_USERS\S-1-5-20。これは値を取得したい主な問題ですHKEY_CURRENT_USERが、値は HKEY_USERS\S-1-5-20 から取得されます。

私のマシンではHKEY_CURRENT_USERHKEY_USERS\S-1-5-21-507921405-1993962763-682003330-1014が同期していることがわかりました。これは、現在のユーザーである可能性があります。オブジェクトがそこから値を取得する場合HKEY_USERS\S-1-5-21-507921405-1993962763-682003330-1014、私の目的は達成されます。HKEY_CURRENT_USERまたはから値を取得する方法を教えてくださいHKEY_USERS\S-1-5-21-507921405-1993962763-682003330-1014

4

1 に答える 1

1

から値を取得できると自分で言いましたがHKEY_CURRENT_USER、期待/必要な値を取得していません。

HKEY_CURRENT_USER現在ログインしているユーザーのキーへのレジストリ内の仮想リンクです (したがって名前)。ご指摘のとおり、ログインすると、これは に「同期」されますHKEY_USERS\S-1-5-21-507921405-1993962763-682003330-1014

HKEY_USERS\S-1-5-20「ネットワーク サービス」ユーザーです (既知の ID のリストについては、こちらを参照してください)。このことから、プログラムをサービス (IIS の Web サイトまたは Windows サービス) として実行していると推測できます。

この場合、ローカル ユーザーのレジストリ ハイブにはアクセスできません (または、少なくともアクセスすべきではありません)。これにアクセスするには、編集するユーザーとして (またはローカルとして) アプリケーションを実行する必要があります。

于 2012-10-23T15:27:04.787 に答える