General Development Considerations for Server Core

6/22/2010

When developing an application for Server Core, the available platform APIs differ from the traditional model for Windows because the user interface and other technologies are constrained. Consider the following limitations of Server Core, some of which might influence your application design and development process.

  • No Windows shell graphical user interface.
  • No ability to access Internet Explorer.
  • No support for playback of audio, video, or multimedia content.
  • No local support for the Microsoft Management Console (MMC).
  • No common dialog-box control for open or save operations (which prevents the use of browse buttons and the use of dialog boxes for reading or writing to files).

The following table shows methods for mitigating various characteristics of an application to help ensure successful deployment of the application to Server Core.

Application characteristic Method

Portability between Server Core and full Windows Server.

Develop your application specifically for Server Core, and it will also run on a full installation of Windows Server.

No additional development is required because Server Core functionality is a subset of Windows Server functionality.

Dependence on the Internet Explorer browser or on a component of Internet Explorer; for example, needing IEFrame.dll for HTML rendering.

Modify your development process and code so that your application no longer depends on components of Internet Explorer.

Internet Explorer cannot be installed on Server Core. If your application cannot be modified, use a full installation of Windows Server as your platform.

Dependence on the Microsoft common dialog boxes; for example, Open, Save, and Save As.

Modify your application design by replacing the common dialog boxes with a custom implementation. Server Core does not support the current set of common dialog boxes.

Alternatively, modify function calls in your application to display the Windows 95 version of the common dialog boxes.

To do so, remove the following flags from the OPENFILENAME data structure that is provided to the GetOpenFileName or GetSaveFileName functions:

  • OFN_EXPLORER
  • OFN_ENABLETEMPLATE

Add the following flags to the OPENFILENAME data structure:

  • OFN_NONETWORKBUTTON
  • OFN_ENABLEHOOK

Provide a hook function that has the following prototype:

UINT_PTR CALLBACK HookProc (HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)

Design requirement that includes audio, video, or multimedia content.

Use a full installation of Windows Server as your platform rather than Server Core. Server Core does not support audio, video, or multimedia content.

Dependence on Microsoft SQL Server being installed locally on the server appliance.

If your Embedded Server license permits your Server Core platform to attach to a remote SQL Server database, modify your application so that it can interface with the remote SQL Server database.

If the application cannot be modified to connect to a remote SQL Server database, use a full installation of Windows Server as your platform rather than Server Core. SQL Server 2008, and earlier versions of SQL Server, do not run on Server Core.

Dependence on the Windows Explorer shell, the Start menu, and so on.

Use a full installation of Windows Server as your platform rather than Server Core. The Windows Explorer shell, the Start menu, and other Windows Explorer features are not present on Server Core.

User interface is a snap-in for the Microsoft Management Console (MMC), and your application must run locally on the server appliance.

Modify your application design by creating a custom user interface that mimics MMC and runs locally on the server appliance.

Alternatively, instead of running the application locally, you can create a remote-management interface in which a remote computer hosts the MMC snap-in.

If the application cannot be modified, use a full installation of Windows Server as a platform rather than Server Core. MMC is not present on Server Core.

Application needs to determine if the underlying platform is Server Core or a full installation of Windows Server.

For more information, see Determining Whether Server Core Is Running.

See Also

Reference

Application Types That Are a Best Fit for Server Core

Other Resources

Application Development Platforms Available on Server Core