I don't recommend shims because the homeowner has a tendency to really HAMMER the shims in. If they're put in too far, they can 'raise' up the floor and cause visible damage.
There are other options, even if you don't have access from below. A site that's pretty good about talking about squeaky floors is The Natural Handyman's Squeaky Floor Page. Next, my favorite fixer (assuming you have access from below AND the squeak is from the sub-floor) is The Squeak Ender.
Remember, depending on what you have access to, you need to determine if the squeak if being caused by the hardwood floor, itself, or by the subfloor. Obviously, if you have access from below, that's where you want to try your first option in the fix. BUT, if the sub-floor is secure where the squeak is, you need to do the fix from above. There are screws and nails that work well from above. Once you recess them, and putty them over, YOU will know where they are but your guests won't be looking at 'nailing patterns'. (If they do, they have waaaaaay too much free time on their hands!)