it's more than likely your regional settings are different to the keyboard layout.
for the keys given it sounds like you have a US keyboard with UK kyboard layout in the regional settings, or vs versa.
if SHIFT 2 shoudl give you ", then you have a UK keyboard. If SHIFT 2 should be @, then it is a US layout.
In Windows 7, goto Control Panel -> Region and Language -> Keyboards and Language and make sure the Keyboard matches the layout you have - either United Kingdom or United States.
The Language you have set doesn't have to match the keyboard, so you can have English (United Kingdom) - Keyboard - US.
or around the other way if you prefer.
The way to change the keyboard layout is to select the one already present, click Add, scroll down and find the language you have, under the Keyboard tree, click show more, select the keyboard you want, click ok.
Then click on the keyboard you don't have in the tree, click remove (you may need to change the default input language first).
And finally, if you are running virtual machines (including XPMode), and the problem you are experiencing is in the VM, then there is a setting you need to set in the VM, and a registry entry for the host. Look it up on your fav search engine..
edit:
snap!