David Rothenberger wrote: > I do it with the following script which uses /proc.
That's an interesting script but it has a couple of deficiencies. It does not list services with names that start with a "." and it breaks on services with a space in the name when -n is used. It's also very slow with -n, as there's no need to invoke awk once for each service, and using forking /bin/cat to read each description is costly. Here's a slightly tweaked version that fixes the above problems and runs about 30 times faster. (0m13.722s down to 0m0.489s on my system at least.) #!/bin/sh usage() { cat <<EOF usage: `basename $0` [-n] [--] -n: Display names EOF } displayNames() { false; } while getopts :n OPT; do case $OPT in n|+n) displayNames() { true; } ;; *) usage exit 2 esac done shift `expr $OPTIND - 1` srvKey=/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services if displayNames; then find $srvKey/ -maxdepth 1 -mindepth 1 -type d -printf '%f\n' | \ sort -f | \ ( while read s; do descr="" [ -f "$srvKey/$s/DisplayName" ] && \ read descr <$srvKey/$s/DisplayName; echo -e "$s\t$descr" done ) | \ awk -F \\t '{printf("%-30s: %s\n", $1, $2)}' else find $srvKey/ -maxdepth 1 -mindepth 1 -type d -printf '%f\n' | \ sort -f fi --- Brian -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/