Candidates seem to appreciate it. It saves everyone time when something like salary expectations are clearly out of alignment.
I've been using this approach for the last 2-3 years and I have found it to be successful (across 2 companies) and worth the extra effort. I haven't received any negative feedback about our process (which I don't take to mean there isn't any or the process is perfect) and I haven't regretted any of the hires we've made (probably around 12 in total). Even when I have to send out a rejection notice, I often get thanked by the candidate for it.
One other important point is that I've worked with management and my team to constantly refine and improve our process. Their buy-in is critical and I feel it needs to be an agile process just like our software development process.