Very difficult to understand what exactly you want to achieve. The answers above seem perfectly plausible to me. I have the feeling though, that you want to keep enabled just some specific controls that may be some specific buttons and some specific hyperlinks. Is that correct??
Why don't you think of some kind of approach where you declare the controls (with their id for instance) which you DON'T want to disable?? You could do that by declaring a list of strings representing the control id's that shouldn't be disabled in your page/usercontrol like
string[] controlIdsToKeepEnabled = new string[]{"buttonSubmit", "hyperlinkInfo"}
Then in the method where you recursively disable all the controls of your site you check whether the control is not inside the list "controlIdsToKeepEnabled".
A bit complicated, but could work for the special case you have. This functionality could then be packed nicely within a separate custom server control.