|Executive Summary: Mark Minasi continues his ongoing Server Core configuration effort by changing the machine’s display resolution. Because Server Core lacks a GUI, some registry tinkering is in order.|
Over the past few months in this column, we’ve discussed how to configure Windows Server 2008’s Server Core. We’ve named the server, given it a DNS suffix, assigned static IP values, enabled Automatic Updates, added server modules, and set up remote administration. This month, let’s change the display resolution—a simple task that becomes quite a challenge without a GUI.
Ever since Windows 3.0, you’ve been able to easily adjust your computer’s screen resolution: Simply right-click the desktop and access the personalization settings. However, in a GUI-less realm, you’ll have to do a bit of registry cave-diving.
Open Regedit—one of the few GUI tools that works on Server Core—and navigate to the HKEY_LOCAL_MACHINE\SYSTEM CurrentControlSet\Control\Video key. Expand the Video key, as you see in Figure 1, and you’ll see three subkeys whose names are GUIDs. When you set up a Windows computer, the system locates all relevant video driver/adapter pairs and gives them random GUIDs. (Long, random, hexadecimal strings are obviously much more straightforward than notations such as “SVGA driver on NVIDIA Adapter 1.”) Under each GUID-named subkey is a 0000 subkey. Inside one of those 0000 subkeys are the registry entries you’re looking for—only one adapter/driver combination is actually functioning on your Server Core machine, and modifying any of the non-functioning ones won’t accomplish anything.
To find the one that you want, examine the contents of each 0000 subkey, paying special attention to the Device Description entry. On my Server Core machine, the Device Description values are Standard VGA Graphics Adapter, RDPDD Chained DD, and VMware SVGA II. Because my Server Core system runs under VMware and I’ve installed VMware Tools, the 0000 subkey I’m looking for is the third one: VMware SVGA II. Be aware, however, that some drivers might not have a Device Description entry; on my Lenovo ThinkPad T61P laptop, for example, the registry’s 0000 entries include the standard VGA and RDPDD entries, as well as a key containing not the Device Description entry, but a DriverDesc entry with the value NVIDIA Quadro FX 570M (which must be the one I normally use on my desktop). So, as always when cave-diving into the registry, bring your brightest lamp!
After you locate the correct 0000 key, look for two REG_DWORD entries inside it: DefaultSettings.XResolution and DefaultSettings .YResolution. Changing these values will change your screen’s width and height, but be sure to enter the values you want! When you double-click a REG_DWORD entry to change its value, the registry editor’s Edit DWORD (32-Bit Value) editing dialog box lets you enter either decimal or hexadecimal, but it assumes you’re entering hex. If you enter 1024, intending to specify a 1024 × 768 resolution, the value might show up as 4132 (the decimal value for 1024 hex). After rebooting your system, you might get a blank screen or—in rare cases—a destroyed monitor. So, before you exit Regedit, take a moment to look at the value it thinks you entered!
Now, log off and log back on to see the new screen-resolution. Remember, the easy way to log off a Server Core machine is by typing
Yes, that’s a lowercase L, not the numeral 1.
If the change didn’t work, you can try a few things. First, doublecheck the Device Description value in the 0000 key that you chose. Sometimes, I see more than one 0000 that refers to my video-card type. Second, double-check the width and height entries for improper hexadecimal values. Finally, remember that you won’t see the change until you log off and log back on.