internal static string GetCitrixRecOptions() { StringBuilder output = new StringBuilder(); try { output.Append(Html.B("Configuration") + Html.br); output.Append(Html.IndentWithSpaces() + "Encryption Level: " + ini.GetSetting("Citrix", "Enctyption") + Html.br); output.Append(Html.IndentWithSpaces() + "Window size: " + ini.GetSetting("Citrix", "Window") + Html.br); output.Append(Html.B("Recorder") + Html.br); output.Append(Html.IndentWithSpaces() + "Window name: " + VugenProtocolsCollectorHelper.Citrix.GetCitrixWindowNameOption("CommonNames", "NAMES") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("BITMAPS", "SaveBitmaps", true)) + "Save snapshots"); output.Append(Html.br + Html.B("Code Generation") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("AGENT", "UseAgent", true)) + "Use Citrix agent input in Code Generation" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("AGENT", "SyncOnText", false)) + "Automatically generate text synchronization calls " + Html.br); } catch (Exception ex) { Logger.Error(ex.ToString()); return(Html.Error(ex.ToString())); } return(output.ToString()); }
public static string GetFlexRoInfo() { try { StringBuilder output = new StringBuilder(); output.Append(Html.B("Flex > RTMP") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("RTMP_RO", "GenerateReceiveStream", true)) + "Generate single step for RTMP/T stream handling" + Html.br); output.Append(Html.B("Flex > Configuration") + Html.br); bool useExternalVm = ini.GetBoolSetting("FLEX_RO", "UseExternalVm", false); output.Append(Html.CheckBox(useExternalVm) + "Use external JVM" + Html.br); int indentLevel = 8; if (useExternalVm) { output.Append(Html.IndentWithSpaces(indentLevel) + "External JVM path: " + ini.GetSetting("FLEX_RO", "ExternalVmPath", "") + Html.br); } output.Append(Html.CheckBox(ini.GetBoolSetting("FLEX_RO", "ExternalDsParser", false)) + "Use GraniteDS configuration" + Html.br); output.Append(Html.IndentWithSpaces(indentLevel) + "Maximum formatted Request/Response size to print (in characters): " + ini.GetSetting("FLEX_RO", "MaxReqResSizeToWriteForLog") + Html.br); output.Append(Html.B("Flex > Externalizable objects") + Html.br); bool EncodeExternalizableObject = ini.GetBoolSetting("FLEX_RO", "EncodeExternalizableObject", false); output.Append(Html.CheckBox(!EncodeExternalizableObject) + "Do not serialize externalizable objects" + Html.br); if (EncodeExternalizableObject == true) { output.Append(Html.CheckBox(true) + "Serialize objects using:" + Html.br); bool UseServerParserToParseAmf3 = ini.GetBoolSetting("FLEX_RO", "UseServerParserToParseAmf3", false); bool isCheckBoxDisabled = false; output.Append(Html.CheckBox(!UseServerParserToParseAmf3, isCheckBoxDisabled, indentLevel) + "LoadRunner AMF serializer" + Html.br); isCheckBoxDisabled = UseServerParserToParseAmf3 ? false : true; output.Append(Html.CheckBox(UseServerParserToParseAmf3, isCheckBoxDisabled, indentLevel) + "Custom Java classes" + Html.br); indentLevel = 12; output.Append(Html.CheckBox(ini.GetBoolSetting("FLEX_RO", "UseFlexGlobalJars", false), isCheckBoxDisabled, indentLevel) + "Use Flex LCDS/BlazeDS jars" + Html.br); bool UseAdditionalJars = ini.GetBoolSetting("FLEX_RO", "UseAdditionalJars", false); string additionalJarsList = ""; if (UseAdditionalJars) { additionalJarsList = Html.AddLinkToHiddenContent(GetFlexAdditionalJarFilesInfo(isCheckBoxDisabled)); } output.Append(Html.CheckBox(UseAdditionalJars, isCheckBoxDisabled, indentLevel) + "Use additional jars " + additionalJarsList + Html.br); } output.Append(Html.br + ini.GetSetting("FLEX_RO", "FlexJvmParams") + Html.br); return(output.ToString()); } catch (Exception ex) { Logger.Error(ex.ToString()); return(Html.Error(ex.Message) + Html.br); } }
public static string GetDotNetRecOptions() { StringBuilder output = new StringBuilder(); try { output.Append(Html.B("Microsoft .NET > Recording") + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Application launch") + Html.br); string iniSection = "General"; output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "InvasiveAnyCpuRecording", false), false, 6) + "Modify .NET 'Any CPU' type executable files before recording." + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Support for previous .NET versions") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "EnableV2Emulation", false), false, 6) + "Emulate previous .NET version in transport level" + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Logging") + Html.br); output.Append(Html.IndentWithSpaces(6) + "Log severity: " + ini.GetSetting(iniSection, "LogSeverity") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "InstrumentationLog", false), false, 6) + "Instrumentation log" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "RecordLog", false), false, 6) + "Recording log" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "CodeGenLog", false), false, 6) + "Code generation log" + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Serialization") + Html.br); output.Append(Html.IndentWithSpaces(6) + "Serialization format: " + ini.GetSetting(iniSection, "SerializationFormat", "Binary") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "SerializeLongArray", false), false, 6) + "Serialize long arrays" + Html.br); output.Append(Html.IndentWithSpaces(8) + "Treshold value for long array size: " + ini.GetSetting(iniSection, "MaxArrayLength", "32") + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Remote Objects") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("Remoting", "RecordInprocProxy", false), false, 6) + "Record in-process objects" + Html.br); output.Append(Html.IndentWithSpaces(6) + Html.B("Asynchronous calls") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "RecordOriginalCallbackByDefault", false), false, 6) + "Call original callstack by default" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "GenerateAsyncCallback", true), false, 6) + "Generate asynchronous callbacks" + Html.br); output.Append(Html.IndentWithSpaces(6) + Html.B("WCF duplex binding") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "GenerateDummyDuplexCallback", true), false, 6) + "Generate dummy callback handler" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "GenerateUniqueClientBaseAddress", true), false, 6) + "Generate unique client based address" + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Debug Options") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("Debug", "StackTrace", true), false, 6) + "StackTrace" + Html.br); output.Append(Html.IndentWithSpaces(6) + "Stack trace limit: " + ini.GetSetting("Debug", "StackTraceLimit", "20") + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Filters") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "IgnoreAllAssemblies", false), false, 6) + "Ignore all assemblies by default" + Html.br); output.Append(Html.IndentWithSpaces() + Html.B("Code generation") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "ShowWarnings", true), false, 6) + "Show warnings" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "ShowStackTrace", false), false, 6) + "Show stack trace" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting(iniSection, "GenerateNewSubscribers", false), false, 6) + "Show all events subscriptions" + Html.br); } catch (Exception ex) { Logger.Error(ex.ToString()); return(ex.ToString()); } return(output.ToString()); }
internal static string GetRdpRecOptions() { StringBuilder output = new StringBuilder(); try { output.Append(Html.B("Client Startup") + Html.br); output.Append(Html.IndentWithSpaces() + "Run RDP client application: " + VugenProtocolsCollectorHelper.Rdp.GetRdpStartup() + Html.br); output.Append(Html.B("Code Generation - Basic") + Html.br); output.Append(Html.IndentWithSpaces() + "Script generation level: " + ini.GetSetting("CodeGeneration", "RDPScriptLevel") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "MouseMovement", false)) + "Generate mouse movement calls" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "RawMouse", false)) + "Generate raw mouse calls" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "RawKeyboard", false)) + "Generate raw keyboard calls" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "GenerateConnection", false)) + "Always generate connection name" + Html.br); output.Append(Html.IndentWithSpaces() + "Automatic generation of synchronization points: " + GetGenerateAutoSyncPointsInfo() + Html.br); output.Append(Html.IndentWithSpaces(8) + "Sync radius(pixels): " + ini.GetSetting("CodeGeneration", "AutoSyncDelta", "20") + Html.br); //output.Append(Html.CheckBox(ini.GetBoolOption("SaveBitmaps", "BITMAPS", true)) + "Save snapshots"); output.Append(Html.br + Html.B("Code Generation - Adv") + Html.br); output.Append(Html.IndentWithSpaces() + "Double-click timeout (msec): " + ini.GetSetting("CodeGeneration", "DblClickThreshold", "500") + Html.br); output.Append(Html.IndentWithSpaces() + "Prefix for snapthos names: " + ini.GetSetting("CodeGeneration", "SnapshotsPrefix", "snapshot_") + Html.br); output.Append(Html.IndentWithSpaces() + "Prefix for clipboard parameters: " + ini.GetSetting("CodeGeneration", "ClipboardParamsPrefix", "ClipboardDataParam_") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "ClipboardParamsCorrelation", true)) + "Correlate clipboard parameters" + Html.br); output.Append(Html.br + Html.B("Code Generation - Agent") + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "UseRdpAgent", false)) + "Use RDP agent" + Html.br); output.Append(Html.CheckBox(ini.GetBoolSetting("CodeGeneration", "EnableRdpAgentLog", false)) + "Enable RDP agent log" + Html.br); output.Append(Html.IndentWithSpaces(5) + "RDP agent log detail level: " + ini.GetSetting("CodeGeneration", "RdpAgentLogSeverityLevel", "Standard") + Html.br); output.Append(Html.IndentWithSpaces(5) + "RDP agent log destination: " + ini.GetSetting("CodeGeneration", "RdpAgentLogDestination", "File") + Html.br); output.Append(Html.IndentWithSpaces(5) + "RDP agent log folder: " + ini.GetSetting("CodeGeneration", "RdpAgentLogFileFolder", "") + Html.br); } catch (Exception ex) { Logger.Error(ex.ToString()); return(ex.ToString()); } return(output.ToString()); }
internal static string GetJavaIniOption(string option) { try { var setting = ini.GetSetting(tabName, option); return(setting.Length < 100 ? setting : Html.AddLinkToHiddenContent(setting.Replace(";", Html.br))); } catch (Exception ex) { Logger.Error(ex.ToString()); return(Html.ErrorMsg() + " " + option + " option"); } }
/// <summary> /// Gets the value of some registry keys /// </summary> /// <exception cref=""></exception> /// <returns></returns> /*private string GetImportantRegKeyValues() * { * try * { * StringBuilder importantKeys = new StringBuilder(1024); * //check if we have important registry keys for this product * if (this.importantRegistryKeys != null) * { * for (int i = this.importantRegistryKeys.GetLowerBound(0); i <= this.importantRegistryKeys.GetUpperBound(0); i++) * { * string inHive = this.importantRegistryKeys[i, 0]; * string keyPath = this.importantRegistryKeys[i, 1]; * string keyName = this.importantRegistryKeys[i, 2]; * string keyValue = null; * * try * { * RegistryKey rk = (inHive == "RegHive.HKEY_CURRENT_USER") ? Registry.CurrentUser.OpenSubKey(keyPath) : Registry.LocalMachine.OpenSubKey(keyPath); * keyValue = rk.GetValue(keyName).ToString(); * importantKeys.Append(keyName + " = " + keyValue + Html.br); * //keyValue = RegistryWOW6432.GetRegKey64(RegHive.HKEY_LOCAL_MACHINE, keyPath, keyName); * } * catch (NullReferenceException) * { * importantKeys.Append(keyName + " = " + Html.Error("Not found!") + Html.br); * } * } * } * return importantKeys.ToString(); * } * catch (Exception ex) * { * Logger.Warn(ex.ToString()); * return ex.Message; * } * }*/ #endregion #region Correlation settings /// Settings /// Recording engine check private string GetCorrelationRulesSupport() { try { StringBuilder output = new StringBuilder(); IniParser ini = new IniParser(this.InstallLocation + @"\dat\protocols\QTWeb.lrp"); output.Append(ini.GetSetting("Vugen", "CorrelationRulesSupport")); return(output.ToString()); } catch (Exception ex) { Logger.Error(ex.ToString()); return(Html.Error(ex.Message)); } }
/// Settings /// Recording engine check private string GetCorrelationRulesSupport() { try { StringBuilder output = new StringBuilder(); IniParser ini = new IniParser(this.InstallLocation + @"\dat\protocols\QTWeb.lrp"); output.Append(ini.GetSetting("Vugen", "CorrelationRulesSupport")); return output.ToString(); } catch (Exception ex) { Logger.Error(ex.ToString()); return Html.Error(ex.Message); } }
public static string GetROHttpProperties() { StringBuilder output = new StringBuilder(); output.Append(Html.br + Html.B("HTTP Properties > Advanced") + Html.br); try { string keyPath = @"Software\Mercury Interactive\Networking\Multi Settings\QTWeb\Recording"; output.Append(CreateCheckBoxFromValue("Reset context for each action", keyPath, "ResetContextBetweenActions") + Html.br); output.Append(CreateCheckBoxFromValue("Save snapshots locally", keyPath, "SaveSnapshotResources") + Html.br); output.Append(CreateCheckBoxFromValue("Generate web_reg_find functions for page titles", keyPath, "RecordWebRegFind") + Html.br); output.Append(Html.IndentWithSpaces() + CreateCheckBoxFromValue("Generate web_reg_find functions for sub-frames", keyPath, "RecordWebRegFindNonPrimary") + Html.br); output.Append(CreateCheckBoxFromValue("Add comment to script for HTTP errors while recording", keyPath, "AddCommentsIfResponceBiggerThen400") + Html.br); output.Append((Html.IndentWithSpaces() + "Support charset") + Html.br); output.Append(Html.IndentWithSpaces() + CreateCheckBoxFromValue("Support charset UTF-8", keyPath, "Utf8Support") + Html.br); output.Append(Html.IndentWithSpaces() + CreateCheckBoxFromValue("Support charset EUC-JP", keyPath, "EUC Encode") + Html.br); //on LR < 11.5 this doesn't exist string ParameterizeServerNames = RegistryWrapper.GetRegKey32(RegHive.CurrentUser, @"Software\Mercury Interactive\Networking\Multi Settings\GlobalParameterizeServer\Recording", "ParameterizeServerNames"); if (ParameterizeServerNames != null) output.Append(CreateCheckBoxFromValue("Parameterize server names", @"Software\Mercury Interactive\Networking\Multi Settings\GlobalParameterizeServer\Recording", "ParameterizeServerNames") + Html.br); String file = Path.Combine(ProductDetection.Vugen.ConfigFolder, "vugen.ini"); String settingEngine = Html.ErrorMsg(); if (File.Exists(file)) { IniParser vugenIni = new IniParser(file); //Pre 12 versions: if (ProductDetection.Vugen.version < new Version(12, 00)) { string oldRecEngine = vugenIni.GetSetting("WebRecorder", "EnableOldSingleRecorded"); settingEngine = Html.CheckBox(oldRecEngine == "1") + "Record using earlier recording engine"; output.Append(Html.br + (Html.IndentWithSpaces() + "Recording engine: " + Html.br + Html.IndentWithSpaces() + settingEngine + Html.br)); } else { string UseProxyRecorder = vugenIni.GetSetting("WebRecorder", "UseProxyRecorder"); string ProxyInStreamMode = vugenIni.GetSetting("WebRecorder", "ProxyInStreamMode"); output.Append(Html.br + Html.IndentWithSpaces(4) + "Proxy Recording settings:" + Html.br); output.Append(Html.CheckBox(UseProxyRecorder == "1", false, 8) + "Use the LoadRunner Proxy to record a local application" + Html.br); output.Append(Html.CheckBox(ProxyInStreamMode == "1", false, 8) + "Use streaming mode when recording with the LoadRunner Proxy" + Html.br); } } output.Append(Html.br + Html.IndentWithSpaces(4) + "Recording schemes: " + Html.br); string CustomHeadersKey = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, "CustomHeaderFlag", "2"); string headersMessage = "Record headers <b>not</b> in the list"; if (CustomHeadersKey == "1") headersMessage = "Record headers in the list"; else if (CustomHeadersKey == "0") headersMessage = "Do not record headers"; output.Append(Html.IndentWithSpaces(8) + "Headers: " + headersMessage + Html.br); if (CustomHeadersKey != "0") { string headersKey = CustomHeadersKey == "2" ? "CustomHeadersExclude" : "CustomHeaders"; string headers = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, headersKey, ""); var parts = Regex.Split(headers, @"(?<=[01])").ToList(); parts.RemoveAll(item => item.EndsWith("0") || item.Equals("")); output.Append(Html.IndentWithSpaces(12) + String.Join(Html.IndentWithSpaces(8), parts.ToArray()).Replace("\n1", Html.br).Replace("\n", Html.IndentWithSpaces(2))); } string ContentTypeFilterKey = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, "ContentTypeFilterFlag", "0"); var contentMessage = new Hashtable() { { "0", "Do not filter content types" }, { "1", "Exclude content types in list:" }, { "2", "Exclude content types <b>not</b> in list:" } }; output.Append(Html.br + Html.IndentWithSpaces(8) + "Content types: " + contentMessage[ContentTypeFilterKey] + Html.br); if (ContentTypeFilterKey != "0") { string filtersKey = ContentTypeFilterKey == "2" ? "ContentTypeFilterExclude" : "ContentTypeFilter"; string content = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, filtersKey, ""); var parts = Regex.Split(content, @"(?<=[01])").ToList(); parts.RemoveAll(item => item.EndsWith("0") || item.Equals("")); output.Append(Html.IndentWithSpaces(12) + String.Join(Html.IndentWithSpaces(8), parts.ToArray()).Replace("\n1", Html.br).Replace("\n", Html.IndentWithSpaces(2))); } } catch (Exception ex) { Logger.Error(ex.ToString()); return output + ex.Message; } return output.ToString(); }
public static string GetROHttpProperties() { StringBuilder output = new StringBuilder(); output.Append(Html.br + Html.B("HTTP Properties > Advanced") + Html.br); try { string keyPath = @"Software\Mercury Interactive\Networking\Multi Settings\QTWeb\Recording"; output.Append(CreateCheckBoxFromValue("Reset context for each action", keyPath, "ResetContextBetweenActions") + Html.br); output.Append(CreateCheckBoxFromValue("Save snapshots locally", keyPath, "SaveSnapshotResources") + Html.br); output.Append(CreateCheckBoxFromValue("Generate web_reg_find functions for page titles", keyPath, "RecordWebRegFind") + Html.br); output.Append(Html.IndentWithSpaces() + CreateCheckBoxFromValue("Generate web_reg_find functions for sub-frames", keyPath, "RecordWebRegFindNonPrimary") + Html.br); output.Append(CreateCheckBoxFromValue("Add comment to script for HTTP errors while recording", keyPath, "AddCommentsIfResponceBiggerThen400") + Html.br); output.Append((Html.IndentWithSpaces() + "Support charset") + Html.br); output.Append(Html.IndentWithSpaces() + CreateCheckBoxFromValue("Support charset UTF-8", keyPath, "Utf8Support") + Html.br); output.Append(Html.IndentWithSpaces() + CreateCheckBoxFromValue("Support charset EUC-JP", keyPath, "EUC Encode") + Html.br); //on LR < 11.5 this doesn't exist string ParameterizeServerNames = RegistryWrapper.GetRegKey32(RegHive.CurrentUser, @"Software\Mercury Interactive\Networking\Multi Settings\GlobalParameterizeServer\Recording", "ParameterizeServerNames"); if (ParameterizeServerNames != null) { output.Append(CreateCheckBoxFromValue("Parameterize server names", @"Software\Mercury Interactive\Networking\Multi Settings\GlobalParameterizeServer\Recording", "ParameterizeServerNames") + Html.br); } String file = Path.Combine(ProductDetection.Vugen.ConfigFolder, "vugen.ini"); String settingEngine = Html.ErrorMsg(); if (File.Exists(file)) { IniParser vugenIni = new IniParser(file); //Pre 12 versions: if (ProductDetection.Vugen.version < new Version(12, 00)) { string oldRecEngine = vugenIni.GetSetting("WebRecorder", "EnableOldSingleRecorded"); settingEngine = Html.CheckBox(oldRecEngine == "1") + "Record using earlier recording engine"; output.Append(Html.br + (Html.IndentWithSpaces() + "Recording engine: " + Html.br + Html.IndentWithSpaces() + settingEngine + Html.br)); } else { string UseProxyRecorder = vugenIni.GetSetting("WebRecorder", "UseProxyRecorder"); string ProxyInStreamMode = vugenIni.GetSetting("WebRecorder", "ProxyInStreamMode"); output.Append(Html.br + Html.IndentWithSpaces(4) + "Proxy Recording settings:" + Html.br); output.Append(Html.CheckBox(UseProxyRecorder == "1", false, 8) + "Use the LoadRunner Proxy to record a local application" + Html.br); output.Append(Html.CheckBox(ProxyInStreamMode == "1", false, 8) + "Use streaming mode when recording with the LoadRunner Proxy" + Html.br); } } output.Append(Html.br + Html.IndentWithSpaces(4) + "Recording schemes: " + Html.br); string CustomHeadersKey = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, "CustomHeaderFlag", "2"); string headersMessage = "Record headers <b>not</b> in the list"; if (CustomHeadersKey == "1") { headersMessage = "Record headers in the list"; } else if (CustomHeadersKey == "0") { headersMessage = "Do not record headers"; } output.Append(Html.IndentWithSpaces(8) + "Headers: " + headersMessage + Html.br); if (CustomHeadersKey != "0") { string headersKey = CustomHeadersKey == "2" ? "CustomHeadersExclude" : "CustomHeaders"; string headers = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, headersKey, ""); var parts = Regex.Split(headers, @"(?<=[01])").ToList(); parts.RemoveAll(item => item.EndsWith("0") || item.Equals("")); output.Append(Html.IndentWithSpaces(12) + String.Join(Html.IndentWithSpaces(8), parts.ToArray()).Replace("\n1", Html.br).Replace("\n", Html.IndentWithSpaces(2))); } string ContentTypeFilterKey = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, "ContentTypeFilterFlag", "0"); var contentMessage = new Hashtable() { { "0", "Do not filter content types" }, { "1", "Exclude content types in list:" }, { "2", "Exclude content types <b>not</b> in list:" } }; output.Append(Html.br + Html.IndentWithSpaces(8) + "Content types: " + contentMessage[ContentTypeFilterKey] + Html.br); if (ContentTypeFilterKey != "0") { string filtersKey = ContentTypeFilterKey == "2" ? "ContentTypeFilterExclude" : "ContentTypeFilter"; string content = RegistryWrapper.GetValue(RegHive.CurrentUser, keyPath, filtersKey, ""); var parts = Regex.Split(content, @"(?<=[01])").ToList(); parts.RemoveAll(item => item.EndsWith("0") || item.Equals("")); output.Append(Html.IndentWithSpaces(12) + String.Join(Html.IndentWithSpaces(8), parts.ToArray()).Replace("\n1", Html.br).Replace("\n", Html.IndentWithSpaces(2))); } } catch (Exception ex) { Logger.Error(ex.ToString()); return(output + ex.Message); } return(output.ToString()); }