Export (0) Print
Expand All

Registry Keys

The Microsoft Surface registry keys are grouped into two types: mode-based registry keys and global registry keys. All mode-based registry keys are located under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0\ModeProfiles hive. The rest of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\ registry keys are considered global and are independent of modes.

Based on how you log on to the Microsoft Surface unit (as an administrator, user, or user with troubleshooting enabled), Surface Shell customizes the Microsoft Surface experience by automatically changing the relevant Microsoft Surface-specific registry keys to match the "mode". These registry changes are organized into "profiles" so that it is easy for you to understand and adjust these changes, if it is necessary.

The following sections describe the relevant Surface registry keys, grouped by their registry hive. You can search this page for the key that you are interested in.

TagInfo/v1.0 Hive

 

Entry Description Default value

ByteTags or IdentityTags

The TagInfo hive defines shape and other data for a byte tag value or an identity tag series. Surface Shell assumes that all tags that are associated with a series have the same shape attributes. This hive is also where you can provide on-screen labels for an object and even alternate text that will appear if the locale changes.

noteNote
If your application uses object routing and the application includes an installer, the installer likely sets and clears these registry keys appropriately.

The TagInfo hive includes the following subkeys:

  • Use the ByteTags key if you want to define byte tags for object routing. Create another subkey and use the byte tag value as they subkey name. For example, you might create a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\TagInfo\v1.0\ByteTags\3C subkey.

  • Use the IdentityTags subkey if you want to define identity tags for object routing. Create another subkey and use the identity tag series value as they subkey name. For example, you might create a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\TagInfo\v1.0\IdentityTags\562D23EA239B1A79 subkey.

To enable the Microsoft Surface software to display a shadow image for object routing that matches the real-world tagged object and to display tethers to the object, the Microsoft Surface software needs to know the size of the rectangle around the object, called the bounding box. The bounding box is always a rectangle or square. If your object is round, you might want to experiment with the bounding box's width and height until you are pleased with the shadow.

For each subkey that you create for a byte tag value or an identity tag series, create the following entries:

noteNote
If Surface Shell cannot find any shape data associated with a given tag, it uses the default settings for the shadow, text, and tethered icons.

  • The BoundingBoxWidth entry should equal the width of the tagged object, in inches. The default BoundingBoxWidth value is 3.25 inches.

  • The BoundingBoxHeight entry should equal the height of the tagged object, in inches. The default BoundingBoxHeight value is 2.125 inches.

  • The PhysicalCenterOffsetFromTagX entry enables your application to compensate for tags that are not positioned in the center of an object.

    For example, you might create customer cards that require the horizontal center of the printed tag to be 1 inch below the horizontal center of the physical card and still be aligned to the vertical center. In this example, PhysicalCenterOffsetFromTagX is -1. If the same tag is 1 inch above the horizontal center, PhysicalCenterOffsetFromTagX is 1. If the tag is located exactly at the horizontal center of the object, PhysicalCenterOffsetFromTagX is 0. The default PhysicalCenterOffsetFromTagX value is 0.

  • The PhysicalCenterOffsetFromTagY entry enables your application to compensate for tags that are not positioned in the center of an object.

    For example, you might create customer cards that require the vertical center of the printed tag to be 1 inch below the vertical center of the physical card and still be aligned to the horizontal center. In this case, PhysicalCenterOffsetFromTagY is -1. If the same tag is 1 inch above vertical center, PhysicalCenterOffsetFromTagY is 1. If the tag is located exactly at the vertical center of the object, PhysicalCenterOffsetFromTagY is 0. The default PhysicalCenterOffsetFromTagY value is 0.

  • The OrientationOffsetFromTag entry enables your application to compensate for tags that are canted or twisted and not parallel to the outside edges of the object.

    For example, your application might use physical customer cards that require the orientation of the tag to be rotated 90 degrees from the orientation of the card. In this case, the OrientationOffsetFromTag value might be 90.0. The default OrientationOffsetFromTag value is 0.

  • The Text entry defines the text that appears directly below the tagged object. The default Text value is blank.

About Off-Center Tags

The tag on an object might not be located in the exact center of the object. If the tag is off center or canted, you indicate its position in the PhysicalCenterOffsetFromTagX, PhysicalCenterOffsetFromTagY, and OrientationOffsetFromTag values. A tag that is perfectly positioned in the center of an object might look like the following illustration.

A business card with a byte tag in the center

This byte tag's registry information might look like the following example.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\TagInfo\v1.0\ByteTags\CB]
BoundingBoxWidth=3.4
BoundingBoxHeight=2.1
PhysicalCenterOffsetFromTagX=0
PhysicalCenterOffsetFromTagY=0
OrientationOffsetFromTag=0
Text="This text will be shown below your object."

The following illustration shows a business card that is vertically oriented. In this example, the tag is above and to the left of the center and is also canted to the right.

A business card object with an off-center byte tag

This byte tag's registry information might look like the following example.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\TagInfo\v1.0\ByteTags\9C]
BoundingBoxHeight=2.1
PhysicalCenterOffsetFromTagX=0.4
PhysicalCenterOffsetFromTagY=0.2
OrientationOffsetFromTag=-355
Text="This text will be shown below your object."

The following illustration shows an off-center and canted tag that is positioned below and left of the center.

A business card object with an off-center byte tag

This byte tag's registry information might look like the following example.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\TagInfo\v1.0\ByteTags\CB]
BoundingBoxWidth=3.4
BoundingBoxHeight=2.1
PhysicalCenterOffsetFromTagX=-1.2
PhysicalCenterOffsetFromTagY=-0.5
OrientationOffsetFromTag=-56
Text="This text will be shown below your object."

BoundingBoxWidth
Developer units: 3.25"
Commercial units: 3.25"

BoundingBoxHeight
Developer units: 2.125"
Commercial units: 2.125"

PhysicalCenterOffsetFromTagX
Developer units: 0
Commercial units: 0

PhysicalCenterOffsetFromTagY
Developer units: 0
Commercial units: 0

OrientationOffsetFromTag
Developer units: 0
Commercial units: 0

Text
Developer units: blank
Commercial units: blank

Global AttractMode Hive

 

Entry Description Default value

CurrentAttractApplication

By default, the AttractMode hive and the CurrentAttractApplication key do not exist. If you want to use a custom attract application, you must add AttractMode, CurrentAttractApplication, and its value to the registry. First, add the AttractMode subkey to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Surface\v1.0, and then add the CurrentAttractApplication string value.

CurrentAttractApplication specifies the name of the custom attract application. This name is the name of the XML file without the .xml file name extension. By default, this entry is not present. If this entry remains blank, if you specify an incorrect custom attract application file name, or if the custom application cannot run, the default Water attract application displays instead.

If you set up a Microsoft Surface unit to display a custom attract application, make sure that you also specify an image of the custom application on the Start new experience screen. For more information, see the StartNewExperienceImage entry.

Default: Blank (No subkey or subkey value is named, so the Water attract application displays.)

DisableDefaultAttractApplication

The DisableDefaultAttractApplication entry applies only if you have added the CurrentAttractApplication entry.

The DisableDefaultAttractApplication entry determines whether the Water attract application is displayed if your custom attract application (named in the CurrentAttractApplication entry) does not load for any reason. If you enable DisableDefaultAttractApplication (1) and the custom application does not load, the out-of-order screen appears.

Valid values are 0 and 1. 1 indicates that the Water attract application is not displayed. 0 indicates that Water is displayed.

ImportantImportant
If you set DisableDefaultAttractApplication to 1 but you do not name a custom attract application, DisableDefaultAttractApplication is ignored and the Water attract application is displayed.

noteNote
By default, the AttractMode key and the DisableDefaultAttractApplication entry do not exist. If you want to use a custom attract application, you must first add AttractMode to the registry. For more information, see the CurrentAttractApplication entry.

Administrator: N/A

Default: 0

Global Feedback Hive

 

Entry Description Default value

CEIPReporting

The CEIPReporting subkey determines whether the Microsoft Surface unit is opted in or opted out of the Microsoft Surface Customer Experience Improvement Program (SCEIP).

Valid values are 1 to enable SCEIP and 0 to disable it.

noteNote
When you buy a new Microsoft Surface unit, if the purchaser opted in to SCEIP, the unit arrives with the appropriate settings already selected.

No default value

Global InternationalSupport Hive

 

Entry Description Default value

InputLanguageID

The InputLanguageID subkey controls the layout and key mapping of the on-screen keyboard. This entry must be one of the following values:

  • 0x409 (US English)

  • 0x20409 (US-International)

  • 0x809 (United Kingdom)

  • 0x452 (United Kingdom Extended)

  • 0x11009 (Canadian Multilingual Standard)

  • 0x40c (French)

  • 0x1009 (Canadian French)

  • 0x100c (Swiss French)

  • 0x80c (Belgian French)

  • 0x1080c (Belgian (Comma)

  • 0x407 (German)

  • 0x807 (Swiss German)

  • 0x40a (Spanish)

  • 0x80a (Latin American)

  • 0x410 (Italian)

  • 0x414 (Norwegian)

  • 0x406 (Danish)

  • 0x41d (Swedish)

  • 0x412 (Korean)

0x409 (US English)

LocaleName

The LocaleName subkey changes how Microsoft Surface displays numbers, currencies, dates, and time. You can specify any locale name that the .NET Framework supports.

For a full list of locale identifiers, see Locale Identifier Constants and Strings on the MSDN Web site.

The locale that you specified during the initial Windows Vista setup process on the Microsoft Surface unit.

UILanguageName

The UILanguageName subkey controls the interface display language for Microsoft Surface. You can specify any locale name that the .NET Framework supports. Microsoft Surface 1.0 SP1 is localized into following UI languages:

  • da-DK (Danish)

  • de-DE (German)

  • en-US (English)

  • es-ES (Spanish)

  • fr-FR (French)

  • it-IT (Italian)

  • ko-KR (Korean)

  • nb-NO (Norwegian (Bokmål)

  • nl-NL (Dutch)

  • sv-SE (Swedish)

noteNote
The preceding list includes the languages that Microsoft Surface is localized into. If you set UILanguageName to a valid value that is not listed above, the Microsoft Surface software determines which language to use for Surface Shell and the out-of-order screen by using .NET Framework rules. For example, if you specify fr-CA (which is not a supported Microsoft Surface locale), Surface Shell and the out-of-order screen will use fr-FR. If the Microsoft Surface software cannot determine a language to use, Surface Shell and the out-of-order screen use English (United States).

The UI language that you specified during the initial Windows Vista setup process on the Microsoft Surface unit.

Global MemoryManagerExemptApplications Hive

 

Entry Description Default value

Application names

(This feature is available only if you install the update that is associated with KB 973966. For more information, read the KB 973966: Performance Degrades When Multiple Applications Are Running article.)

The MemoryManagerExemptApplications entry specifies the list of applications that are exempt from the Microsoft Surface memory manager.

Each application that you list in this entry must be in the form of a DWORD value. The Name field of each entry should match the application's name that is specified in the application's XML registration file. The Boolean value of the entry indicates if the application should be exempt or not. Enter 1 if the application should be exempt from closing, or enter 0 if it is not exempt.

By default, MemoryManagerExemptApplications is empty.

Empty

ModeProfiles Registry Keys

It is important to note that most registry key changes that you make while a user session is in progress will not go into effect until certain events occur, such as:

  • The user taps the I'm done and Close everything buttons.

  • The unit is switched from administrator mode to user mode.

  • Surface Shell is restarted.

If you want to be confident that your registry key changes are in effect, you will need to restart Surface Shell. There are several ways to remotely restart the Surface Shell process:

To restart the Surface Shell process after you make registry key changes

  • For all registry key changes except to the UISuppression hive, you can restart the Surface Shell process by using the tskill command-line utility. (For more information, see TsKill on the Microsoft TechNet Web site.)

  • If you have made changes to critical process monitoring registry keys, you can restart the Microsoft Surface unit by using one of the following command-line tools:

  • If you have made UISuppression registry key changes, connect to the Microsoft Surface unit by using Remote Desktop Connection (which starts the session in administrator mode), and then double-click the Enter User Mode desktop shortcut (which closes the Remote Desktop connection and puts the unit in user mode).

ApplicationProcessMonitoring ModeProfiles Hive

 

Entry Description Profile default value

DebugDumpTimeout

The DebugDumpTimeout entry specifies the maximum time that Surface Shell gives a debugger to generate debug dumps about applications that are failing (that is, crashing) or not responding (that is, hanging).

This time-out is relevant only when a session is ending or an application is starting (an application is hanging if it did not call the SignalApplicationLoadingComplete method on time). In these situations, if Surface Shell detects an attached debugger, it waits until this time-out passes before it ends the process. If Surface Shell cannot end the process after that, Surface Shell enters an out-of-order state.

DebugDumpTimeout values can range from 0 through 600 seconds. 0 seconds means that Surface Shell will wait forever for the application to exit if it is being debugged.

Administrator: 0 seconds (never time out)

Default: 180 seconds

User: 180 seconds

UserDebug: 0 seconds (never time out)

Disable

If the Disable entry is enabled, users do not receive a notification if an application fails or stops responding, Surface Shell does not automatically restart applications, and hanging applications are not ended.

Administrator: 0 seconds (never time out)

Default: 1 second

User: 0 seconds (never time out)

UserDebug: 0 seconds (never time out)

HangingTimeout

A Microsoft Surface application is considered to have stopped responding if an application did not respond to Windows messaging during the HangingTimeout time period. Valid values for HangingTimeout range from 2 seconds through 60 seconds.

Administrator: 5 seconds

Default: 5 seconds

User: 5 seconds

UserDebug: 5 seconds

LaunchDebuggerOnHang

The LaunchDebuggerOnHang entry determines whether the debugger that is associated with the optional DbgManagedDebugger registry key should be started automatically if that application stops responding. For more information about debug dump time-outs, see Collecting Debug Dumps in User Mode.

If LaunchDebuggerOnHang is set to zero, the debugger does not start if an application stops responding.

If LaunchDebuggerOnHang is set to any value other than zero, the debugger automatically starts if an application stops responding.

Surface Shell opens the tool that is specified in the optional DbgManagedDebugger registry key. For more information about debug dumps and debug dump time-outs, see Collecting Debug Dumps in User Mode.

This registry key enables you to create a debug dump file while the application is deployed in a customer-facing environment. If an application is randomly hanging and the developer who wrote the application cannot reproduce the problem, configure DebugManagedDebugger, enable LaunchDebuggerOnHang, and let customers or testers interact with the Microsoft Surface unit as usual. After the precipitating events recur (the Microsoft Surface unit stops responding and a debug dump is generated), disable the LaunchDebuggerOnHang key and review the debug dump results.

Administrator: 0

Default: 0

User: 0

UserDebug: 0

CriticalProcessMonitoring ModeProfiles Hive

 

Entry Description Profile default value

DebugDumpTimeout

Do not modify this registry key.

Disable

The Disable entry determines whether Surface Loader monitors Surface Shell or Surface Input for crashes or hangs, stops them when they hang, and restarts them when they crash or hang.

Valid values for this entry are 0 and 1.

  • 0 indicates that Surface Loader will monitor Surface Shell or Surface Input for crashes or hangs, will stop them when they hang, and will restart them when they crash or hang.

  • 1 indicates that Surface Loader will not monitor Surface Shell or Surface Input for crashes or hangs, will not stop them when they hang, and will not restart them when they crash or hang.

Administrator: Not supported. (This value applies only when Surface Loader is run, and Surface Loader does not run in administrator mode.)

Default: 1

User: 0

UserDebug: 0

HangingTimeout

Critical processes (Surface Shell and Surface Input) are considered to be hung if they have not responded during the HangingTimeout time-out period. If a critical process has stopped responding, the process is restarted, the RestartQuotaAttempts counter is incremented, and the RestartQuotaPeriod counter begins. If this restart exceeds the RestartQuotaAttempts value within RestartQuotaPeriod, the critical process is not restarted, and the error message is displayed on the unit, followed by the out-of-order message.

Valid values for HangingTimeout range from 2 seconds through 60 seconds.

Administrator: 5 seconds

Default: 5 seconds

User: 5 seconds

UserDebug: 5 seconds

LaunchDebuggerOnHang

Do not modify this registry key.

RestartQuotaAttempts

The RestartQuotaAttempts entry specifies the number of times during the RestartQuotaPeriod period that critical processes are automatically restarted after they crash or hang. For information about how to set the time during which the restart attempts are counted, see RestartQuotaPeriod. (The default value is three attempts within 10 minutes.)

Valid values for RestartQuotaAttempts range from 0 to MAX_DWORD, where 0 means never restart and go to the out-of-order state after the system first crashes or hangs and MAX_DWORD means always restart.

Administrator: 3

Default: 3

User: 3

UserDebug: RestartQuotaAttempts is set to MAX_DWORD (always restart), and the RestartQuotaPeriod value is ignored

RestartQuotaPeriod

The RestartQuotaPeriod entry specifies the number of seconds during which critical processes are restarted after they fail or crash during a session. For information about how to set the number of restart attempts, see RestartQuotaAttempts. The default value is three restart attempts within 600 seconds (10 minutes).

Valid values for RestartQuotaPeriod range from 5 through 86,400 seconds (24 hours).

Administrator: 600 seconds

Default: 600 seconds

User: 600 seconds

UserDebug: RestartQuotaAttempts is set to MAX_DWORD (always restart), so the RestartQuotaPeriod value is ignored.

StartupGracePeriod

The StartupGracePeriod entry specifies the time between when a critical process (Surface Shell and Surface Input) is started and when the HangingTimeout counter begins.

Valid values for StartupGracePeriod range from 0 through 600 seconds (10 minutes).

Administrator: 10 seconds

Default: 10 seconds

User: 10 seconds

UserDebug: 10 seconds

InactivityTimer ModeProfiles Hive

 

Entry Description Profile default value

AppWasLaunched

A user opens an application from Launcher and interacts with the application. The user either walks away or is distracted and does not interact with the Microsoft Surface unit and the AppWasLaunched time period elapses. The Microsoft Surface software sends an event to each open application and asks the application if it wants to time out and close. If the application does not respond to this event, a new screen appears that asks the user if they want to:

  • Continue their activity. If the user then taps the Continue my activity icon, the previous application reappears and the user can continue to interact with the application.

  • Start a new experience. If the user taps the Start new experience icon, the Microsoft Surface software closes all running applications and shows the attract application (that is, it starts a new user session).

If the Microsoft Surface software does not receive touch input for the InactivityUI time period, and if an application subscribes to the InactivityTimeoutOccurring event, Surface Shell closes that active application and displays the attract application. If the application does not subscribe to this event, the InactivityTimeoutOccurring event displays the Start new experience screen (as if the time-out was not canceled). The InactivityUI scenario also applies if users return to Launcher after they close all applications or leave one or more applications running in the background.

Valid values for AppWasLaunched include 0 (no time-out) or from 10 through 3,600 seconds (60 minutes).

For more information about the Start new experience screen, see Configuring Out-of-Order and Error Screens.

Administrator: 120 seconds

Default: 120 seconds

User: 120 seconds

UserDebug: 120 seconds

EnableInactivityTimeoutDebugging

Do not modify this registry key.

Exploration

The Exploration time-out begins when a user touches an access point and goes to Launcher from the attract application. If the user does not select an application and does not interact with the Microsoft Surface screen for the Exploration time-out, Surface Shell closes Launcher and displays the attract application.

Valid values for Exploration include 0 (no time-out) or range from 10 through 3,600 seconds (60 minutes).

Administrator: 60 seconds

Default: 60 seconds

User: 60 seconds

UserDebug: 60 seconds

InactivityUI

The InactivityUI entry specifies the maximum length of time that can elapse without a user touching either the Continue my activity or the Start a new experience button after an inactivity screen appears before Surface Shell closes the active applications and starts a new user session.

A user opens an application from Launcher and interacts with the application. The user either walks away or is distracted and does not interact with the Microsoft Surface unit for a while and the AppWasLaunched time-out period elapses. The Start a new experience screen appears, and the InactivityUI timer starts.

If a user does not touch either the Continue my activity or the Start a new experience button within the InactivityUI interval, all running applications are closed and the user session is restarted.

noteNote
You might want to make some applications cancel the no-touch event if, for example, the application is showing a movie or playing a song. However, after the InactivityUI time-out occurs, any running applications are closed and the session is restarted.

The preceding situations apply only if an application subscribes to the InactivityTimeoutOccurring event. If the application does not subscribe to this event, the InactivityTimeoutOccurring event displays the Start new experience screen (as if the time-out was not canceled). The InactivityUI scenario also applies if users return to Launcher after they close all applications or leave one or more applications running in the background.

Valid values for InactivityUI include 0 (no time-out) or range from 10 through 3,600 seconds (60 minutes).

Administrator: 0 seconds (never expires)

Default: 60 seconds

User: 60 seconds

UserDebug: 0 seconds (never expires)

StartNewExperienceImage

Use the StartNewExperienceImage entry to display a static image of your custom attract application on the Start new experience screen.

When a user opens an application and there is no activity for the maximum AppWasLaunched time period, the Microsoft Surface unit displays a screen with two options: Continue my activity or Start a new experience.

Your Start new experience image must be a PNG file that is 320 × 240 pixels and it must be located on the Microsoft Surface unit. The syntax for StartNewExperienceImage is:

drive:[directory/… [directory/…]]image.png
noteNote
If the StartNewExperienceImage value is blank, or if the image does not load for any reason, Surface Shell displays a snapshot of the default attract application and displays that in the Start a new experience button.

Administrator: Drive:Surface Core\AttractContent\AttractCNUImage.png

Default: Drive:Surface Core\AttractContent\AttractCNUImage.png

User: Drive:Surface Core\AttractContent\AttractCNUImage.png

UserDebug: Drive:Surface Core\AttractContent\AttractCNUImage.png

Shell ModeProfiles Hive

 

Entry Description Profile default value

AcceptVSHOSTProcesses

Do not modify this registry key.

App2ndInstanceNotification

Do not modify this registry key.

ApplicationConnectionPolicy

Do not modify this registry key.

ApplicationExitTimeout

By default, Surface Shell ends all connected applications that do not close within the default 5 seconds after Surface Shell issues the WM_CLOSE call. You can increase this default WM_CLOSE time-out to allow more time for debugging.

Valid values for ApplicationExitTimeout are 5 seconds or more.

Remember to reset this value to the default 5 seconds after you finish debugging to avoid affecting the user experience.

Administrator: 5 seconds

Default: 5 seconds

User: 5 seconds

UserDebug: 5 seconds

AttractLoadingScreenTimeout

The AttractLoadingScreenTimeout entry specifies the time that an attract application has to call the SignalApplicationLoadingComplete method after it has been started by Surface Shell. (For information about this time-out for non-attract applications, see LoadingScreenTimeout.)

noteNote
To compensate for overall system performance immediately after the Windows operating system restarts, for the first several minutes after Surface Shell is started, this time-out is automatically adjusted to three times the time-out that is specified.

Administrator: 30 seconds

Default: 30 seconds

User: 30 seconds

UserDebug: 30 seconds

EnableMemoryManager

(This feature is available only if you install the update that is associated with KB 973966. For more information, read the KB 973966: Performance Degrades When Multiple Applications Are Running article.)

The EnableMemoryManager entry is a DWORD value that determines whether Microsoft Surface memory manager is enabled.

Valid values for EnableMemoryManager are 0 (memory manager is disabled) and 1 (memory manager is enabled.

By default, the memory manager is enabled.

Administrator: N/A

Default: 1 (enabled)

User: N/A

UserDebug: N/A

EnableWindowsIdleTimeBlocker

(This feature is available only if you install the update that is associated with KB 973966. For more information, read the KB 973966: Performance Degrades When Multiple Applications Are Running article.)

The EnableWindowsIdleTimeBlocker entry is a DWORD value that determines whether the Windows idle time blocker is enabled.

Valid values for EnableWindowsIdleTimeBlocker are 0 (idle time blocker is disabled) and 1 (idle time blocker is enabled).

By default, the Windows idle time blocker is enabled.

Administrator: N/A

Default: 1 (enabled)

User: N/A

UserDebug: N/A

LoadingScreenTimeout

The LoadingScreenTimeout entry specifies the time that applications have to call the SignalApplicationLoadingComplete method after they have been started by Surface Shell. (LoadingScreenTimeout does not apply to the attract application. For more information, see AttractLoadingScreenTimeout.)

noteNote
To compensate for overall system performance immediately after the Windows operating system restarts, for the first several minutes after Surface Shell is started, this time-out is automatically adjusted to three times the time-out that is specified.

Administrator: 10 seconds

Default: 10 seconds

User: 10 seconds

UserDebug: 10 seconds

MemoryManagerOverloadThreshold

(This feature is available only if you install the update that is associated with KB 973966. For more information, read the KB 973966: Performance Degrades When Multiple Applications Are Running article.)

The MemoryManagerOverloadThreshold entry is a DWORD value that specifies the memory threshold percentage when Surface Shell starts to close applications. That is, when the total physical memory that is being used exceeds the specified percentage, the system is considered overloaded and Surface Shell starts to close applications.

Because this entry is a percentage, you must enter a value by using the decimal base, not the default hexadecimal base.

Valid values for MemoryManagerOverloadThreshold are from 0 to 100 decimal.

Administrator: N/A

Default: 60

User: N/A

UserDebug: N/A

SALCTimeoutNotification

Do not modify this registry key.

ShowMonitorWarning

The ShowMonitorWarning entry specifies whether a warning message appears if certain display conditions that make for a better developer experience are not in effect when Surface Shell starts. These types of display conditions include the following:

  • Launcher and Windows Explorer are both running on the Microsoft Surface unit. (The preferred developer arrangement is to display Launcher on the Microsoft Surface screen and Windows Explorer on an external monitor.)

  • The Microsoft Surface screen is not the primary monitor.

Administrator: 1

Default: 1

User: 0

UserDebug: 0

SingleAppLoadingScreenTimeout

By default, the SingleAppLoadingScreenTimeout key entry does not exist. If you want to use single-application mode on a Microsoft Surface unit (and you do not want Launcher to appear), you must add SingleAppLoadingScreenTimeout and its value to the registry. First, add the SingleAppLoadingScreenTimeout key to HKLM\SOFTWARE\Microsoft\Surface\v1.0\ModeProfiles\Default\Shell, and then add the SingleAppLoadingScreenTimeout string value.

For Microsoft Surface units that are running in single-application mode, SingleAppLoadingScreenTimeout is the time, in seconds, that the application has to load before the loading screen times out.

Valid SingleAppLoadingScreenTimeout values are from 1–60 seconds.

Administrator: 30 seconds

Default: 30 seconds

User: 30 seconds

UserDebug: 30

UserAutoLogon

Do not modify this registry key.

UISuppression ModeProfiles Hive

 

Entry Description Profile default value

AutoShutdown

The AutoShutdown entry determines whether the "The following programs are still running" screen is suppressed during logoff (if applications have not been closed before the logoff request).

Valid values for AutoShutdown are 0 (the "The following programs are still running" screen is displayed) and 1 (the "The following programs are still running" screen is suppressed).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

Beep

The Beep entry determines whether the Windows system beep is suppressed. If you set Beep to 0, you can hear system beeps through the speakers of the Surface unit.

If you set Beep to 1, Windows system beeps are suppressed and are not sent to the Microsoft Surface unit's speakers.

For information about non-beep Windows sounds, see the WindowsSounds registry key.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

CrashDump

The CrashDump entry determines whether Windows Error Reporting generates a crash report in the event of a crash.

Set CrashDump to 1 to suppress report generation, or set CrashDump to 0 to generate a crash report automatically if the Microsoft Surface unit is not connected to the Internet.

noteNote
If the unit is not connected to the Internet, an unresponsive application might be reported as hung or might take a long time to completely disappear.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

CrashUI

The CrashUI entry determines whether the Windows Error Reporting UI is suppressed.

Valid values for CrashUI are 0 (Windows Error Reporting UI is displayed) and 1 (Windows Error Reporting UI is suppressed).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

FastBugCheck

The FastBugCheck entry specifies how briefly the unit displays a blue screen if a stop error occurs.

If you enable this registry key (set it to 1) and a stop error occurs, the screen appears blue for approximately 2 seconds. If you disable this key (set it to 0), the blue screen appears for the default Windows blue screen setting (longer than 2 seconds).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

FastRecoveryOptions

The FastRecoveryOptions entry determines whether the Microsoft Surface unit displays the standard Windows Error Recovery screen if a stop error, power failure, or other catastrophic event occurs.

If you set FastRecoveryOptions to 1, the Windows Error Recovery screen is not displayed. If you set FastRecoveryOptions to 0, the Windows Error Recovery screen is displayed for the default 30 seconds.

Windows Error Recovery screen

Valid values for FastRecoveryOptions are 1 (do not show the Windows Error Recovery screen) or 0 (show the Windows Error Recovery screen). If FastRecoveryOptions is set to 1, Surface Shell does not register touch input but does respond to either local or remote keyboard input.

noteNote
If you want to start a Microsoft Surface unit by using one of the Safe Mode options, your selection input must be received within approximately 5 seconds, much sooner than the time that is noted on the screen.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

FirewallPrompt

If the FirewallPrompt entry is disabled (set to 0), when an application tries to accept an incoming connection (unless that incoming connection has been recently blocked or is in the exceptions list), the standard Windows Security Alert – Windows Firewall has blocked some features of this program dialog box appears.

Windows Firewall security alert

Valid values for FirewallPrompt are 0 (show the Windows Firewall dialog box) and 1 (do not show the Windows Firewall dialog box).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

MousePointers

The MousePointers entry determines whether Surface Shell suppresses the mouse pointer. If MousePointers is set to 1, you cannot see a mouse pointer that is activated by Windows Vista or any application on the Microsoft Surface unit. If MousePointers is set to 0, the mouse pointer is displayed.

If MousePointers is set to 0, Surface Shell still registers touch input.

noteNote
MousePointers does not affect whether the text input pointer () appears. If an application calls for a text input pointer, it displays on the Microsoft Surface unit.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

ProgramCompatibilityAssistant

The ProgramCompatibilityAssistant entry determines whether the Program Compatibility Assistant dialog boxes are shown or suppressed. The Program Compatibility Assistant is displayed if:

  • You try to install software that is known to be incompatible with Windows Vista.

  • An install fails for any reason.

Valid values are 0 and 1. 1 suppresses the Program Compatibility Assistant; 0 displays it.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

ProjectorBlanking

Do not modify this registry key.

RemoveChangePassword

Do not modify this registry key.

ReplaceWindowsExplorer

Do not modify this registry key.

Screensaver

Do not modify this registry key.

ShellHangUI

Do not modify this registry key.

Sidebar

Do not modify this registry key.

TaskManager

The TaskManager entry determines whether you can access Windows Task Manager.

The easiest way to troubleshoot Microsoft Surface applications in user mode is to enable Windows Task Manager and run troubleshooting tools, such as a debugger or cmd.exe. (By default, Windows Task Manager is disabled in user mode.)

Valid values for TaskManager are 0 (Task Manager is accessible) and 1 (Task Manager is not accessible).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

TitleBarSuppression

The TitleBarSuppression entry determines whether Microsoft Surface application pop-up windows and Surface Shell pop-up windows that have a title bar are suppressed.

Valid values are 0 and 1. Set TitleBarSuppression to 1 to suppress such pop-ups; set TitleBarSuppression to 0 to display them.

noteNote
This feature is ignored if UnknownUISuppression is disabled. Set UnknownUISuppression to 1 if you also want to suppress Microsoft Surface application and Surface Shell pop-up windows that have a title bar.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

UACPrompt

The UACPrompt entry enables you to specifically control whether User Access Control prompts appear or are suppressed.

Valid values for UACPrompt are 0 (UAC prompts are displayed) and 1 (UAC prompts are suppressed).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

UnknownUIQuotaNumber

The UnknownUIQuotaNumber entry specifies how many unknown UI windows that Surface Shell suppresses during the UnknownUIQuotaPeriod time period before the Microsoft Surface unit enters an out-of-order state.

The default value is three unknown Windows UI suppressed within 10 minutes. If a fourth unknown Windows UI is encountered during the 10-minute time period, the Microsoft Surface unit enters the out-of-order state.

For information about how to set the number of minutes during which unknown UI windows are suppressed, see UnknownUIQuotaPeriod.

Administrator: N/A

Default: 3

User: 3

UserDebug: 3

UnknownUIQuotaPeriod

The UnknownUIQuotaPeriod entry specifies the number of minutes during which unknown UI windows are suppressed before the Microsoft Surface unit enters an out-of-order state. The UnknownUIQuotaNumber entry specifies the number of unknown UI windows that are suppressed.

The default value of UnknownUIQuotaPeriod is 600 seconds (10 minutes).

Zero is a valid value for UnknownUIQuotaPeriod.

Administrator: N/A

Default: 600 seconds

User: 600 seconds

UserDebug: 600 seconds

UnknownUISuppression

By default, for the User profile, all Windows Vista prompts, User Account Control prompts, Windows Firewall prompts, access to Windows Task Manager, and automatic updates are suppressed automatically on a Microsoft Surface unit. However, you might have additional non-Microsoft Surface application UI that might appear. The UnknownUISuppression entry specifies whether you want to suppress this other UI.

Valid values for UnknownUISuppression are 0 (unknown UI are displayed) and 1 (unknown UI are suppressed).

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

WindowsDiagnosticsResolverUI

The WindowsDiagnosticsResolverUI entry determines whether the Windows Diagnostic Infrastructure (WDI) built-in resolver UI is shown or suppressed.

WDI captures trace event information. If a problem is detected, the WDI can take a snapshot of the buffered information and analyze it locally or upload it to Microsoft Customer Support. WDI displays a Send Error Report or Don't Send dialog box.

Valid values are 0 and 1. 1 suppresses the WDI resolver UI; 0 displays it.

Administrator: N/A

Default: 0

User: 1

UserDebug: 0

WindowsSounds

The WindowsSounds entry determines whether Windows system sounds are suppressed.

If you set WindowsSounds to 0, you can hear Windows system sounds through the speakers of the Microsoft Surface unit. If you set WindowsSounds to 1, Windows system sounds are suppressed and are not sent to the Surface unit's speakers.

noteNote
Windows system sounds do not include the Windows system beep sound. To suppress the Windows system beep, see the Beep registry key.

Administrator: N/A

Default: 0

User: 1

UserDebug: 1

Global Shell Hive

 

Entry Description Default value

EnableObjectRouting, EnableObjectRoutingByteTags, and EnableObjectRoutingIdentityTags

The EnableObjectRouting, EnableObjectRoutingByteTags, and EnableObjectRoutingIdentityTags keys determine whether object routing is enabled for a particular type of tag. Object routing tags are applicable only when there are installed applications that have registered for object routing in their XML registration file (which must include the appropriate <Tags></Tags> section).

Valid values for EnableObjectRouting, EnableObjectRoutingByteTags, and EnableObjectRoutingIdentityTags are 0 and 1. 1 indicates that the item is enabled; 0 indicates that the item is disabled.

Object routing is enabled if both of the following occur:

  • EnableObjectRouting=1 (enabled)

  • EnableObjectRoutingIdentityTags=1 (enabled) or EnableObjectRoutingByteTags=1 (enabled)

Object routing is disabled if both of the following occur:

  • EnableObjectROutingIdentityTags=0 (disabled)

  • EnableObjectRoutingByteTags=0 (disabled)

Object routing is disabled in this situation even if EnableObjectRouting=1 (enabled).

Developer units: 1

Commercial units: 1

InitialOrientation

(Optional) InitialOrientation is the initial orientation (relative to the bottom of the Windows Vista display) of the application that runs in single-application mode.

When a user starts an application from Launcher, the application uses the InitialOrientation property to determine which side of the unit has the orientation so that the application is oriented in the same direction.

Specify the InitialOrientation property in your application only if the application has a specific orientation. An application can have four sides or only two sides. If the application has four sides, the application does not have to set the orientation.

Valid values are "bottom" or "top".

bottom

IsUserDebugDefault

Do not modify this registry key.

OutofOrderRestartDelay

The OutofOrderRestartDelay entry determines how many minutes pass before the Microsoft Surface unit is restarted after the second out-of-order event. The restart delay for the first out-of-order event in a 24-hour period is always 10 minutes and is not configurable.

Valid values range from 10 through 1440. (1440 equals 24 hours.)

Developer units: 60 minutes

Commercial units: 60 minutes

OutofOrderRestartQuota

The OutofOrderRestartQuota entry determines how many times during a 24-hour period the Microsoft Surface unit restarts after an out-of-order event.

Valid values range from 0 through 10.

Developer units: 0

Commercial units: 3

ServiceApplicationRestartDelay

For Microsoft Surface units that are running a service application, if that application crashes or exits with a non-zero exit code, Surface Shell waits for the ServiceApplicationRestartDelay period and then restarts the service application.

There is no limit to the number of times that the Microsoft Surface software restarts a service application.

The Microsoft Surface software does not restart services if they exit normally (with an exit code of zero), and it does not monitor if service applications stop responding (hang).

10 seconds

ShellPath

Do not modify this registry key.

SingleAppMode

(Required for single-application mode.) The SingleAppMode subkey enables or disables single-application mode.

Valid values are 0 (disabled) or 1 (enabled).

Developer units: 0

Commercial units: 0

TableMode

Do not modify this registry key.

Global SingleAppMode Hive

(You can specify these values in the Global Shell hive or this hive.)

 

Entry Description Default value

SingleAppApplication

(Required for single-application mode.) The SingleAppApplication subkey specifies the name of the application that runs in single-application mode.

The valid value for SingleAppApplication is the file name of the application's XML file, without the file name extension.

Empty

SingleAppRestartPeriod

(Optional) The SingleAppRestartPeriod subkey specifies the time period, in seconds, in which the number of restarts is counted for an application that is running on a Microsoft Surface unit in single-application mode.

The valid values for SingleAppRestartPeriod range from 1 through MAX_DWORD (in seconds).

600

SingleAppRestartQuota

(Optional) The SingleAppRestartQuota subkey specifies the number of times that the single-application mode application is restarted if it crashes or hangs during the restart period. If the quota is exceeded, the Microsoft Surface unit enters the out-of-order state.

The valid values for SingleAppRestartQuota range from 0 through MAX_DWORD. If this entry is 0, the application is never restarted. If this entry is MAX_DWORD, the application is always restarted.

2 (Surface Shell restarts the application two times.)

Global UISuppression Hive

 

Entry Description Default value

ProjectorBlankingTime

The ProjectorBlankingTime entry specifies the maximum time (in seconds) that a Microsoft Surface unit's projector is blanked to hide Windows shutdown, start up, logon, and other user interface elements that cannot be suppressed through other means. The projector will be unblanked as soon as appropriate Microsoft Surface user interface (for example, Launcher or the out-of-order screen) is displayed.

Developer units: 0

Commercial units: 600 seconds (10 minutes)

Global UnknownUIExemptProcesses Hive

 

Entry Description Default value

Drive:path/filename

This entry lists the processes that you want to exempt from suppression by Surface Shell. By default, the Microsoft Surface out-of-order executable file is included. To include other processes, do the following:

  1. From Registry Editor, in the left pane, expand HKEY_LOCAL_MACHINE, expand SOFTWARE, expand Software expand Microsoft, expand Surface, expand v1.0, and then click UnknownUIExemptProcesses.

  2. In the right pane, right-click the empty area, point to New, and then click DWORD (32-bit) Value.

  3. In the Name column, enter either the full path and name or just the name of the process you want to exempt from unknown UI suppression.

  4. Right-click the new registry key, and then click Modify.

    The Edit DWORD (32-bit) Value dialog box appears.

  5. In the Value data box, enter 1, and then click OK.

If you set this registry key to 0, UI from this process is suppressed.

Default value: D:\Program Files\Microsoft Surface\v 1.0\SurfaceOutOfOrder.exe

Did you find this information useful? Please send us your suggestions and comments.

© 2009 Microsoft Corporation. All rights reserved.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft