Ok, I got a 'good' algorithm for encryption. But where is the good place to store the encrytion KEY?

I have 3 ideas, but they seems not so good, anyone have other idea?

If store it with the encrypt data or in a file, so whoever get the data or file can decrtypt it. this is not safe.
If store it in Windows Registery, than user will lost the key if he/she reinstall Windows.
If use the user's password as the key, it need to re-en/decrypt all the data every time user change password.