Ejemplo n.º 1
0
        /// <summary>
        /// レジストリのパラメータ名/種類/値のチェック
        /// 長かったので独立したメソッドに
        /// </summary>
        /// <param name="regKey">RegistryKeyインスタンス</param>
        private void CheckRegValue(RegistryKey regKey)
        {
            if (Name == null)
            {
                Console.Error.WriteLine("Name無し: {0}", Name);
                return;
            }
            try
            {
                RegistryValueKind valueKind = regKey.GetValueKind(Name);

                //  Name用チェック
                if (Target == Item.NAME)
                {
                    retValue = true;
                    return;
                }

                //  Type用チェック
                if (Target == Item.TYPE)
                {
                    retValue = valueKind == RegistryControl.StringToValueKind(Type);
                    if (!retValue)
                    {
                        Console.Error.WriteLine(
                            "Type不一致: {0} / {1}", Type, RegistryControl.ValueKindToString(valueKind));
                    }
                    return;
                }

                //  Value用チェック
                if (valueKind == RegistryValueKind.Binary)
                {
                    Value = Value.ToUpper();
                }
                retValue = RegistryControl.RegistryValueToString(regKey, Name, valueKind, true) == Value;
                if (!retValue)
                {
                    Console.Error.WriteLine("Value不一致 ({0}): {1}",
                                            RegistryControl.ValueKindToString(valueKind), Value);

                    Console.WriteLine(RegistryControl.RegistryValueToString(regKey, Name, valueKind, true));
                }

                /*
                 * switch (valueKind)
                 * {
                 *  case RegistryValueKind.String:
                 *      retValue = regKey.GetValue(Name) as string == Value;
                 *      if (!retValue)
                 *      {
                 *          Console.Error.WriteLine("Value不一致 (REG_SZ): {0}", Value);
                 *      }
                 *      break;
                 *  case RegistryValueKind.Binary:
                 *      retValue = RegistryControl.RegistryValueToString(regKey, Name, valueKind, true) == Value.ToUpper();
                 *      //retValue = RegistryControl.RegBinaryBytesToString(regKey.GetValue(Name) as byte[]) == Value.ToUpper();
                 *      if (!retValue)
                 *      {
                 *          Console.Error.WriteLine("Value不一致 (REG_BINARY): {0}", Value);
                 *      }
                 *      break;
                 *  case RegistryValueKind.DWord:
                 *      retValue = (int)regKey.GetValue(Name) == int.Parse(Value);
                 *      if (!retValue)
                 *      {
                 *          Console.Error.WriteLine("Value不一致 (REG_DWORD): {0}", Value);
                 *      }
                 *      break;
                 *  case RegistryValueKind.QWord:
                 *      retValue = (long)regKey.GetValue(Name) == long.Parse(Value);
                 *      if (!retValue)
                 *      {
                 *          Console.Error.WriteLine("Value不一致 (REG_QWORD): {0}", Value);
                 *      }
                 *      break;
                 *  case RegistryValueKind.MultiString:
                 *      retValue = string.Join("\\0", regKey.GetValue(Name) as string[]) == Value;
                 *      if (!retValue)
                 *      {
                 *          Console.Error.WriteLine("Value不一致 (REG_MULTI_SZ): {0}", Value);
                 *      }
                 *      break;
                 *  case RegistryValueKind.ExpandString:
                 *      retValue = regKey.GetValue(Name, "", RegistryValueOptions.DoNotExpandEnvironmentNames) as string == Value;
                 *      if (!retValue)
                 *      {
                 *          Console.Error.WriteLine("Value不一致 (REG_EXPAND_SZ): {0}", Value);
                 *      }
                 *      break;
                 *  case RegistryValueKind.None:
                 *      retValue = string.IsNullOrEmpty(Value);
                 *      break;
                 * }
                 */
            }
            catch (IOException)
            {
                //  Name,Type,Valueの条件で名前の有無チェック
                Console.Error.WriteLine("Name無し: {0}", Name);
            }
        }