User preferences are saved in application data on each User with an Application ID of “cme:UserPreferences”. It is saved as an XML fragment (in Unicode).
The starting folder has a type (1 = SDL Tridion Dashboard, 2 = Main View) and optionally an item URI for the “Start on specific Folder” option.
These are saved in the StartScreenType and StartItemId elements in the XML.
Note that the XML is stored without a root element (which is added by the data extender reading it and is currently named “Cme”).
Example XML:
<?xml version="1.0" encoding="UTF-8"?>
<Cme>
<SearchMaxResults>50</SearchMaxResults>
<ToolbarMode>maximized</ToolbarMode>
<LastSelectedLocation>
<Publication ID="tcm:0-5-1">
<Item Type="tcm:16">tcm:5-10-2</Item>
<Item Type="tcm:8192">tcm:5-8-2</Item>
</Publication>
</LastSelectedLocation>
<PublishDialog/>
<StartScreenType>2</StartScreenType>
<StartItemId>tcm:0-5-1</StartItemId>
</Cme>
As an example, here are a few lines of PowerShell scripting that reads it for the Administrator user:
$client = Get-TridionCoreServiceClient
$prefs = $client.ReadApplicationData("tcm:0-11-65552", "cme:UserPreferences")
$encoding = New-Object System.Text.UnicodeEncoding
$encoding.GetString($prefs.Data)
Please note that you would be overwriting users’ explicit preferences just to ensure that they see this new Custom Page. The users would then have to change their preferences back again.