/// <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); } }