How do I stop apps from installing themselves to my SD-card? It seems that some apps default to saving to SD-card when they're first installed on Froyo rather than defaulting to internal memory, this is annoying because whenever I mount the SD Card as storage in Windows the icons for those apps disappear from my home screen, and I have to go into the apps list and find them to add them back onto the home screen. If I even notice they've gone.

I have a Galaxy S with over 1.4GB of internal memory free, so have absolutely no worries about apps taking up space on the internal storage, or running out of memory, so I'd like to use that space and save the SD storage for my files (ie pictures, movies and music).

Apps that had somehow moved themselves onto my SD Card when I checked just now were SliceIt and Open Signal Maps. In the past I remember that both Angry Birds and Angry Birds Seasons had done this too until I moved them back onto the phone (in fact I thought for a bit that Angry Birds Seasons had replaced Angry Birds as the original disappeared from the home screen around the same time that I installed Seasons, I then got suspicious a few days later when Seasons disappeared too and found them both on the SD).
Thanks to this answer to this question Is moving apps to SD only available to rooted devices?.

I've discovered the getInstallLocation ADB command and set the install location to internal on my un-rooted phone.

With the Android SDK installed, and my phone connected via USB with USB Debugging mode switched on, enter the following commands:

adb devices
(check that ADB can see my phone, and start necessary services)

adb shell
(connects a shell to the phone)

pm getInstallLocation
(returns 0[auto])

pm setInstallLocation 1
(sets the default install location to internal memory)

pm getInstallLocation
(run again to check that it is now set to the correct location, returns 1[internal])

exit

Safely Remove Hardware, unplug phone and all done, without any need for root!