How to Restore the Classic Start Button in Windows Server 2012: A Developer’s Guide


2 views

html

Many developers working with Windows Server 2012 encounter an unexpected UI change - the classic Start button is replaced by the Charms bar. While the Charms menu provides similar functionality, most power users prefer the immediate access of the traditional Start button.

For programmers who frequently:

  • Access administrative tools
  • Quickly launch development environments
  • Need efficient server management

The Charms bar's hover-to-activate behavior creates unnecessary workflow interruptions.

The most reliable method involves editing the Windows Registry. Here's a PowerShell script that automates the process:

# PowerShell script to restore Start button
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"
$regName = "EnableStartMenu"
$regValue = 1

if (-not (Test-Path $regPath)) {
    New-Item -Path $regPath -Force | Out-Null
}

Set-ItemProperty -Path $regPath -Name $regName -Value $regValue -Type DWord

# Restart Explorer to apply changes
Stop-Process -Name explorer -Force

For those uncomfortable with registry edits, consider these alternatives:

  • Classic Shell (open-source)
  • StartIsBack (paid with trial)

Here's how to install Classic Shell via command line:

choco install classic-shell -y

If the Start button doesn't appear after applying changes:

  1. Check Group Policy settings (gpedit.msc)
  2. Verify no conflicting shell replacements are installed
  3. Ensure proper permissions for registry edits

The registry method adds minimal overhead (typically <1MB RAM). Third-party solutions may use 5-15MB depending on features enabled.


If you're running Windows Server 2012 and find the Start button missing from your taskbar (while Charms still work), this typically indicates either:

  • Group Policy restrictions preventing Start button display
  • Corrupted Explorer shell components
  • Third-party software interference

Create a .reg file with the following content:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoStartMenuMorePrograms"=dword:00000000
"NoClose"=dword:00000000
"NoStartMenuMFUprogramsList"=dword:00000000

Double-click the file to merge the registry changes, then restart Explorer or reboot.

For administrators managing multiple servers, use this PowerShell script:

# Start Button Restore Script
function Restore-StartButton {
    $regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
    
    if (-not (Test-Path $regPath)) {
        New-Item -Path $regPath -Force | Out-Null
    }
    
    Set-ItemProperty -Path $regPath -Name "NoStartMenuMorePrograms" -Value 0 -Type DWord
    Set-ItemProperty -Path $regPath -Name "NoClose" -Value 0 -Type DWord
    Set-ItemProperty -Path $regPath -Name "NoStartMenuMFUprogramsList" -Value 0 -Type DWord
    
    Stop-Process -Name explorer -Force
    Start-Process explorer.exe
}

Restore-StartButton

After applying changes, verify by:

  1. Checking Event Viewer (eventvwr.msc) for Explorer-related errors
  2. Running sfc /scannow to check system file integrity
  3. Temporary workaround: Press Windows key + R to open Run dialog

For developers needing programmatic access, here's a C# example to create a basic Start menu replacement:

using System;
using System.Runtime.InteropServices;

class StartMenuHelper {
    [DllImport("user32.dll")]
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    
    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
    
    public static void ToggleStartMenu() {
        IntPtr startMenu = FindWindow("Windows.UI.Core.CoreWindow", "Start");
        if (startMenu != IntPtr.Zero) {
            ShowWindow(startMenu, 5); // SW_SHOW = 5
        }
    }
}