I was wondering when somebody would ask this
There's an undocumented management feature (seemingly only used in Demo Mode) that allows you to enable/disable various features. It doesn't remove them from the UI entirely but does gray out the relevant options in the settings menu, which is the next best thing.
Not sure entirely how it all works as I've never needed this but here are all of the options available:
Code:
device.policy.action.discovery.disabled
device.policy.action.experimental.browser.disabled
device.policy.action.experimental.mp3player.disabled
device.policy.action.experimentalmenu.disabled
device.policy.action.kindlestore.disabled
device.policy.action.settings.changelanguage.disabled
device.policy.action.settings.changeprimarydictionary.disabled
device.policy.action.settings.deregistration.disabled
device.policy.action.settings.editdevicename.disabled
device.policy.action.settings.editpassword.disabled
device.policy.action.settings.editpersonalinfo.disabled
device.policy.action.settings.managesocialnetworks.disabled
device.policy.action.settings.menu.factoryrestore.disabled
device.policy.action.settings.toggleannotationsbackup.disabled
device.policy.action.settings.togglepopularhighlights.disabled
device.policy.action.settings.togglepublicnotes.disabled
device.policy.action.settings.turnoffpassword.disabled
device.policy.action.settings.turnonpassword.disabled
device.policy.action.settings.wifisettings.disabled
device.policy.action.togglewireless.disabled
device.policy.id
device.policy.setting.allowpolicywithdtcp
device.policy.setting.policysideload.disabled
device.policy.setting.wifisideload.disabled
These should be added to the "properties" table in appreg.db with the handlerId "dcc". Accepted values are "true" or "false" for everything other than device.policy.id which can be an arbitrary string. The specific policy that you're after is "device.policy.action.settings.menu.factoryrestore .disabled".