예제 #1
0
    /// <summary>
    /// Retrieves data about multiple verbs (executable commands) from the registry.
    /// </summary>
    /// <param name="typeKey">The registry key containing information about the file type / protocol the verbs belong to.</param>
    /// <param name="commandMapper">Provides best-match command-line to <see cref="Command"/> mapping.</param>
    /// <returns>A list of detected <see cref="Verb"/>.</returns>
    private static IEnumerable <Verb> GetVerbs(RegistryKey typeKey, CommandMapper commandMapper)
    {
        #region Sanity checks
        if (typeKey == null)
        {
            throw new ArgumentNullException(nameof(typeKey));
        }
        if (commandMapper == null)
        {
            throw new ArgumentNullException(nameof(commandMapper));
        }
        #endregion

        return(RegUtils.GetSubKeyNames(typeKey, "shell").Select(verbName => GetVerb(typeKey, commandMapper, verbName)).WhereNotNull());
    }