One way to do this is to export your custom and knownGenes tracks to BED files, using an application like bedmap to report gene IDs from knownGenes, which overlap custom track regions by one or more bases, e.g.:
$ bedmap --echo --echo-map-id --delim '\t' custom.bed knownGenes.bed > answer.bed
The answer.bed file will contain results of the form:
[ custom-element-1 ] \t [ semi-colon-delimited list of known genes overlapping element 1 ]
[ custom-element-2 ] \t [ semi-colon-delimited list of known genes overlapping element 2 ]
...
[ custom-element-N ] \t [ semi-colon-delimited list of known genes overlapping element N ]
I think the UCSC browser exports sorted BED data, so there shouldn't be a need to pre-sort the BED inputs.