The best Registry hacks for fixing annoying Windows features

The Registry has been a core part of Windows since 1992 and the days of Windows 3.1.

It functions as an internal database of application and Windows settings that, when handled properly, can offer a wealth of small tweaks to enhance your OS experience. Unfortunately, the Registry isn't exactly the most user-friendly of systems, and includes many settings that aren't intended to be changed by humans.

That said, if you know where to look, there are many that are quite straightforward and can safely be changed. We've put together a list of some of the more helpful changes you can make, including step-by-step instructions to ensure you're changing precisely what you should be.

Make taskbar buttons show the last active window

If you have more than one window open in an application for instance, two Word documents then clicking on the taskbar icon will open a thumbnail for each, allowing you to click on either one to bring it to the fore. However, if you prefer, you can tweak this behaviour so that clicking takes you straight back to whichever window was last active. As with the previous Registry tweak, the key you need to edit is:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced

Create a new DWORD called "LastActiveClick" and set it to 1. You can still access the thumbnails of other windows by hovering the mouse pointer over the application's taskbar icon.

Adjust the duration of menu animations

When you right-click on an item in the Windows Explorer, the menus (and submenus) take a moment to "fade in". You can shorten this delay by changing a value within this Registry key:

HKCU\Control Panel\Desktop

The value you want is called "MenuShowDelay"; the default is 400 milliseconds, but you're free to reduce it (or raise it if you wish). You can also choose to make windows pop up, rather than fading in, by opening the Settings app, searching for the toggle labelled "Show animations in Windows", and flipping the switch. Be warned, though having submenus appear instantaneously is actually quite distracting!

Shut down Windows more quickly

When you shut down or restart Windows, the operating system instructs all running processes to terminate. Sometimes, though, a program won't do that and it might be for a good reason, such as an open "save file" dialog that needs your attention. Often, though, the cause is just a badly written program that doesn't close down promptly like it should. If you don't like waiting, you can tell Windows to forcibly kill all processes when it's time to restart.

To do so, navigate to:

HKCU\USER\Control Panel\Desktop

Create a new DWORD value called "AutoEndTasks", set it to 1 and those annoying "this app is preventing shutdown" messages should be a thing of the past. Just make sure you've saved your data before you tell Windows to reboot.

Add "Command Prompt here" to the Explorer context menu

In previous versions of Windows, you could hold down Shift while right-clicking on a folder to see the handy option to "Open Command Prompt here". In Windows 10 that's changed to "Open Powershell window here". If you want to get the old-school Command Prompt option back, the key to edit is:

HKCR\Directory\Background\shell\cmd

Look for a DWORD value called "HideBasedOnVelocityId"; to restore the old menu option, rename it to "ShowBasedOnVelociyId". Unfortunately, this isn't as simple as it sounds, as by default you don't have permission to edit this value.

To gain access, right-click on the "cmd" key, select Permissions and then click Advanced. At the top of the window that opens you should see that this key is owned by TrustedInstaller. Click the Change link next to this name to open the "Select user or group" dialog. Type in your username, then click OK to close this window, and again to close the Advanced Security Settings window.

Finally, once you're back in the "Permissions for cmd" window, select the Administrators group, tick the "Allow" box next to "Full Control" and click OK. You can now change the name of the value phew!

Hide "Open PowerShell window here" from the Explorer context menu

Having done the above, you might prefer to hide the old PowerShell menu item. The key you need to edit is right next to the one we were just editing, at:

HKCR\Directory\Background\shell\Powershell

As you might be able to guess, you can hide the menu item in question by changing this value from "ShowBasedOnVelocityId" to "HideBasedOnVelocityId". However, since this key is also protected, you will need to go through the exact same rigmarole as above to gain access but by now you should be an old hand at that.

Add "Take Ownership" shortcut to the Explorer context menu

As we've just seen, permissions in Windows can be a drag if you want to get hands-on with certain system functions. Adding an Explorer shortcut can make it a lot easier to take ownership of specific files (although, sadly, it doesn't work for Registry keys). To add in a shortcut, navigate to:

HCR\*\shell

Now create a new subkey within this key called "runas", and double-click the "(Default)" value that is automatically created for the new key. Change its value to "Take Ownership". Once that's done, create a new String value within the runas key called "NoWorkingDirectory" and leave its value unset.

The next step in the process is to create a new subkey within "runas" called "command", and again edit the "(Default)" value. However, this time, you will need to enter the following value:

cmd.exe /c takeown /f \"%1\" && icacls\"%1\" /grant administrators:F

Finally, we need to create a new string value inside this key called "IsolatedCommand"; set its value to the same CMD.EXE string as above. The change should take effect immediately: when you right-click on a file, you will now see the option to take ownership of it, without having to delve into Windows' security settings.

Make "Take Ownership" work with folders too

The above hack works on files, but not on entire folders. To make it work recursively on folders which means you can easily take possession of hundreds of files at once you should navigate to:

HCR\Directory\shell

Follow the same instructions as before: create a new "runas" key, change its default value to "Take Ownership" and create a new "NoWorkingDirectory" string value. Then again, create a subkey called "command" and edit the "(Default)" value.

This time, though, the command is:

cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t

Once more, you should copy the command above into a new string value called IsolatedCommand within the "command" subkey and you're finished.

Clean up the "Open With" context menu

When you right-click on a file and select "Open With", you'll see a selection of programs that have registered themselves as handlers for that particular file type. To remove a particular application from this list, browse to:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\

Here you'll find a long list of all the different file extensions that are registered on your PC. Scroll down to the one you want to edit and then expand it to reveal a subkey called "OpenWithList". Here you'll see all the registered handlers; delete any key to remove it from the context menu.

If you want to add programs to this list, it's safest not to try to do it through the Registry: instead, right-click on the file in Explorer, select "Open With", and then pick "Choose another app..." at the bottom of the list. Select the application you want and henceforth, it will be added to your context menu.

Add "Copy To..." and "Move To..." context menus

Move files around a lot? There's no need to be dragging icons this way and that, or messing around with Ctrl+C and Ctrl+V. By editing the Registry, you can create contextual menu items that let you copy and move items with a single click. Start by navigating to:

HCR\AllFilesystemObjects\shellex\ContextMenuHandlers

You'll see that there's already a subkey here called SendTo. Create a new one and call it "Copy To". Then, edit its "(Default)" value and set it to "{C2FBB630-2971-11D1-A18C-00C04FD75D13}" (including the curly brackets, but not the quotation marks").

Now when you right-click on a file or folder, you'll see a new menu item entitled "Copy to folder..." which lets you directly specify a destination. To create a "Move To" menu item, do exactly the same thing, but call the key "Move To" (obviously) and set its default value to "{C2FBB631-2971-11D1-A18C-00C04FD75D13}".

Make "Do this for all items" the default when copying files

It's a small thing, but when you're copying a folder full files, it's annoying when Windows keeps stopping to ask what it should do about conflicts and other issues. So you might be happy to learn that there's a Registry setting you can tweak to automatically tick the "Do this for all items" box. You still have to tell Windows what to do, but now it's a single click. You'll find the key at:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager

Simply edit the "Confirmation CheckBoxDoForAll" value, changing it from 0 to 1.

Use strictly alphabetical file sorting

Windows Explorer tries to show you files in an intuitive order, so FILE_10 comes after FILE_9. But perhaps your filenames aren't sequential, and you would prefer to see them in strict alphabetical order? The key you need to edit is:

HKLM\Software\Microsoft\Windows\Currentversion\Policies\Explorer

Create a new DWORD value called "NoStrCmpLogical" and set it to 1. Next time you open an Explorer window, FILE_10 will be sorted ahead of FILE_9 (and indeed FILE_2).

Disable automatic driver updates

Windows 10's ability to automatically download and install drivers makes it a cinch to set up, compared to earlier versions of the OS. More problematic is the way it also automatically installs updates as they become available even though these may contain unwanted feature changes or even bugs. To keep your drivers stable, navigate to:

HKLM\SOFTWARE\Policies\Microsoft\Windows

Create a subkey called WindowsUpdate and then within it create a new DWORD value called "ExcludeWUDriversInQualityUpdate". Set it to 1 and restart your PC; while Windows Update continues to automatically download security updates, it should now leave your device drivers alone.

Change your owner and organisation name

When you originally installed Windows, it may have asked you for a name and organisation. Many applications will use this information as the defaults for registration and other metadata. This is fine as far as it goes but there's no official way to ever update this information once you've provided it. Happily, it's straightforward to do with a quick Registry tweak. The keys you want are located at:

HKLM\Software\Microsoft\Windows NT\CurrentVersion

The values are called "RegisteredOrganization" and "RegisteredOwner" feel free to change them to whatever you want.

Enable Verbose booting

The Windows 10 boot screen may be tasteful, with its cyan logo on a plain black background but it's entirely uninformative if something goes wrong. Technical users may, therefore, prefer to see a Linux-style log of exactly what's going on during the boot process. To enable "verbose" mode, browse to:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

Create a new DWORD value called "VerboseStatus" and give it a value of 1. Once that's done, prepare for a deluge of technical information next time you start up Windows...

Darien Graham-Smith

Darien began his IT career in the 1990s as a systems engineer, later becoming an IT project manager. His formative experiences included upgrading a major multinational from token-ring networking to Ethernet, and migrating a travelling sales force from Windows 3.1 to Windows 95.

He subsequently spent some years acting as a one-man IT department for a small publishing company, before moving into journalism himself. He is now a regular contributor to IT Pro, specialising in networking and security, and serves as associate editor of PC Pro magazine with particular responsibility for business reviews and features.

You can email Darien at darien@pcpro.co.uk, or follow him on Twitter at @dariengs.