/// <summary> /// Takes two tokens and compares them using version info. /// Note only tokens that match on Vendor, ProductLine, Language get compared, the pfDidCompare flag indicates this /// </summary> private static int CompareTokenVersions(ObjectToken token1, ObjectToken token2, out bool pfDidCompare) { pfDidCompare = false; RegistryDataKey attributes1 = null; RegistryDataKey attributes2 = null; attributes1 = token1.Attributes; attributes2 = token2.Attributes; // get vendor, version, language, product line for token 1 if (attributes1 != null) { string vendor1; string productLine1; string version1; string language1; attributes1.TryGetString("Vendor", out vendor1); attributes1.TryGetString("ProductLine", out productLine1); attributes1.TryGetString("Version", out version1); attributes1.TryGetString("Language", out language1); // get vendor, version, language, product line for token 2 if (attributes2 != null) { string vendor2; string productLine2; string version2; string language2; attributes2.TryGetString("Vendor", out vendor2); attributes2.TryGetString("ProductLine", out productLine2); attributes2.TryGetString("Version", out version2); attributes2.TryGetString("Language", out language2); if (((string.IsNullOrEmpty(vendor1) && string.IsNullOrEmpty(vendor2)) || (!string.IsNullOrEmpty(vendor1) && !string.IsNullOrEmpty(vendor2) && vendor1 == vendor2)) && ((string.IsNullOrEmpty(productLine1) && string.IsNullOrEmpty(productLine2)) || (!string.IsNullOrEmpty(productLine1) && !string.IsNullOrEmpty(productLine2) && productLine1 == productLine2)) && ((string.IsNullOrEmpty(language1) && string.IsNullOrEmpty(language2)) || (!string.IsNullOrEmpty(language1) && !string.IsNullOrEmpty(language2) && language1 == language2))) { pfDidCompare = true; return(CompareVersions(version1, version2)); } else { return(-1); } } else { return(1); } } else { return(-1); } }
public override bool Equals(object obj) { ObjectToken objectToken = obj as ObjectToken; if (objectToken != null) { return(string.Compare(base.Id, objectToken.Id, StringComparison.OrdinalIgnoreCase) == 0); } return(false); }
internal static ObjectToken DefaultToken(string category) { Helpers.ThrowIfEmptyOrNull(category, "category"); ObjectToken objectToken = null; objectToken = DefaultToken("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\" + category, "DefaultTokenId"); if (objectToken == null) { objectToken = DefaultToken("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\" + category, "DefaultTokenId"); } return(objectToken); }
private static ObjectToken GetHighestTokenVersion(ObjectToken token, ObjectToken tokenSeed, string[] criterias) { if (tokenSeed.MatchesAttributes(criterias)) { bool pfDidCompare; int num = CompareTokenVersions(tokenSeed, token, out pfDidCompare); if (pfDidCompare && num > 0) { token = tokenSeed; } } return(token); }
private static ObjectToken DefaultToken(string category, string defaultTokenIdValueName) { ObjectToken token = GetPreference(category, defaultTokenIdValueName); if (token != null) { // Now do special check to see if we have another token from the same vendor with a // more recent version - if so use that. // First lets change the category to LOCAL_MACHINE using (ObjectTokenCategory tokenCategory = ObjectTokenCategory.Create(category)) { if (tokenCategory != null) { if (token != null) { foreach (ObjectToken tokenSeed in (IEnumerable <ObjectToken>)tokenCategory) { token = GetHighestTokenVersion(token, tokenSeed, s_asVersionDefault); } } else { // If there wasn't a default, just pick one with the proper culture string[] sCultureId = new string[] { string.Format(CultureInfo.InvariantCulture, "{0:x}", CultureInfo.CurrentUICulture.LCID) }; foreach (ObjectToken tokenSeed in (IEnumerable <ObjectToken>)tokenCategory) { if (tokenSeed.MatchesAttributes(sCultureId)) { token = tokenSeed; break; } } // Still nothing, picks the first one if (token == null) { foreach (ObjectToken tokenSeed in (IEnumerable <ObjectToken>)tokenCategory) { token = tokenSeed; break; } } } } } } return(token); }
private static ObjectToken DefaultToken(string category, string defaultTokenIdValueName) { ObjectToken objectToken = GetPreference(category, defaultTokenIdValueName); if (objectToken != null) { using (ObjectTokenCategory objectTokenCategory = ObjectTokenCategory.Create(category)) { if (objectTokenCategory == null) { return(objectToken); } if (objectToken != null) { foreach (ObjectToken item in (IEnumerable <ObjectToken>)objectTokenCategory) { objectToken = GetHighestTokenVersion(objectToken, item, asVersionDefault); } return(objectToken); } string[] sAttributes = new string[1] { string.Format(CultureInfo.InvariantCulture, "{0:x}", new object[1] { CultureInfo.CurrentUICulture.LCID }) }; foreach (ObjectToken item2 in (IEnumerable <ObjectToken>)objectTokenCategory) { if (item2.MatchesAttributes(sAttributes)) { objectToken = item2; break; } } if (objectToken == null) { using (IEnumerator <ObjectToken> enumerator3 = ((IEnumerable <ObjectToken>)objectTokenCategory).GetEnumerator()) { if (enumerator3.MoveNext()) { return(enumerator3.Current); } return(objectToken); } } return(objectToken); } } return(objectToken); }
private static ObjectToken GetHighestTokenVersion(ObjectToken token, ObjectToken tokenSeed, string[] criterias) { // if override and higher version - new preferred. bool fOverride = tokenSeed.MatchesAttributes(criterias); if (fOverride) { bool fDidCompare; int lRes = CompareTokenVersions(tokenSeed, token, out fDidCompare); if (fDidCompare && lRes > 0) { token = tokenSeed; } } return(token); }
internal static ObjectToken DefaultToken(string category) { Helpers.ThrowIfEmptyOrNull(category, nameof(category)); ObjectToken token = null; // Try first to get the preferred token for the current user token = DefaultToken(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Speech\" + category, _defaultTokenIdValueName); // IF failed try to get it for the local machine if (token == null) { token = DefaultToken(SpeechRegistryKey + category, _defaultTokenIdValueName); } return(token); }
/// <summary> /// Try to get the preferred token for a category /// </summary> private static ObjectToken GetPreference(string category, string defaultLocation) { ObjectToken token = null; using (ObjectTokenCategory tokenCategory = ObjectTokenCategory.Create(category)) { if (tokenCategory != null) { string sToken; if (tokenCategory.TryGetString(defaultLocation, out sToken)) { token = tokenCategory.OpenToken(sToken); } } } return(token); }
private static ObjectToken GetPreference(string category, string defaultLocation) { ObjectToken result = null; using (ObjectTokenCategory objectTokenCategory = ObjectTokenCategory.Create(category)) { if (objectTokenCategory == null) { return(result); } string value; if (objectTokenCategory.TryGetString(defaultLocation, out value)) { return(objectTokenCategory.OpenToken(value)); } return(result); } }
private static int CompareTokenVersions(ObjectToken token1, ObjectToken token2, out bool pfDidCompare) { pfDidCompare = false; RegistryDataKey registryDataKey = null; RegistryDataKey registryDataKey2 = null; registryDataKey = token1.Attributes; registryDataKey2 = token2.Attributes; if (registryDataKey != null) { string value; registryDataKey.TryGetString("Vendor", out value); string value2; registryDataKey.TryGetString("ProductLine", out value2); string value3; registryDataKey.TryGetString("Version", out value3); string value4; registryDataKey.TryGetString("Language", out value4); if (registryDataKey2 != null) { string value5; registryDataKey2.TryGetString("Vendor", out value5); string value6; registryDataKey2.TryGetString("ProductLine", out value6); string value7; registryDataKey2.TryGetString("Version", out value7); string value8; registryDataKey2.TryGetString("Language", out value8); if (((string.IsNullOrEmpty(value) && string.IsNullOrEmpty(value5)) || (!string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(value5) && value == value5)) && ((string.IsNullOrEmpty(value2) && string.IsNullOrEmpty(value6)) || (!string.IsNullOrEmpty(value2) && !string.IsNullOrEmpty(value6) && value2 == value6)) && ((string.IsNullOrEmpty(value4) && string.IsNullOrEmpty(value8)) || (!string.IsNullOrEmpty(value4) && !string.IsNullOrEmpty(value8) && value4 == value8))) { pfDidCompare = true; return(CompareVersions(value3, value7)); } return(-1); } return(1); } return(-1); }
/// <summary> /// Tests whether two AutomationIdentifier objects are equivalent /// </summary> public override bool Equals(object obj) { ObjectToken token = obj as ObjectToken; return(token != null && string.Equals(Id, token.Id, StringComparison.OrdinalIgnoreCase)); }