Original Article here

This sheet summarises all the things I do to make my Win2k machine more useful to me. I've summarised it here partly for my own benefit. (I have to repeat the process on each new machine) and partly in the hope that it may be be of use to others.

Please tell me, simonpj@microsoft.com, if there are things you find useful that aren't mentioned here.

I have a Win2k Machine, but I've added possibly-inaccurate notes about Win95 too. In general, Win95/Win98 behave the same, and WinNT/Win2k behave the same.

Acknowledgements: Many thanks to Sigbjorn Finne and Luca Cardelli, from whom much of the enclosed advice comes.

General setup and user interface

Your environment variables

Much of the Unix-y stuff below involves you setting your environment variables. For example, on WinNT/Win2k, to edit your PATH variable, do the following:

Some environment variables are "user variables" and some are "system variables". (I'm not sure of the difference but both are changed though the same dialogue.)

In addition, when running a Cygwin (see below) shell you can set environment variables in your .bashrc file. But it is better to set your environment variables from the control panel (they get inherited by bash) because then they are visible to applications that aren't started by bash. For example, when you're invoking CVS (and ssh) via Emacs keybindings; it invokes cvs.exe without going via bash. On a Win9x machine you need to edit autoexec.bat using Windows/system/Sysedit. You need to reboot to make the new settings take effect.

Make Caps-lock behave like Ctrl

When I'm using emacs I need to use the Ctrl key a lot. It's very inconveniently placed on the Windows keyboard. A much better plan is to make the Caps-lock key (which is much better placed) into a duplicate of the Ctrl key. You lose Caps-lock, but who cares?

I know of two ways to do this (below).

Alternatively Luca recommends the Happy Hacking keyboard. No caps-lock at all.


Here is a utility that does the job:


I've been using it for some years. NOTE: the distributed version of Ctrl2Cap (2.0) works fine with Windows XP. About a year ago I had a lot of trouble with version 2.0 on my then-Windows-2000 machine. I fiddled about for ages, and contacted the author. Nothing worked. Fortunately, I had a previous version still around, and that does work. Well, it did for me. Here it is. Use only if desperate.

Altering the key mapping

Erling Alf Ellingsen told me that an easier way to achieve the same effect is by altering the key mapping in the Windows Registry. Here's caps.reg a little registry file that makes the alteration. You can install it just by double-clicking on caps.reg (after unzipping it). (See notes about .reg files.) Then restart your machine to make the change take effect.

Here's what caps.reg contains:

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] 
  "Scancode Map"=#hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00 

Erling writes: "Breaking it down:

  00 00 00 00 ("version", should be 0) 
  00 00 00 00 ("flags", should be 0) 
  02 00 00 00 (number of key maps) 
  1d 00 3a 00 (map scan code 1D to scan code 3A) 
  00 00 00 00 (blank key map) 

If my memory serves me, 0x1D is the left ctrl key, and 0x3A is Caps Lock."

I have tested this solution and it seems to work. Strange though; if it's so easy, why do SysInternals have a special utility?

Make your Contacts take precendence over the global address list

[This one is relevant for Outlook only, and even then I think it's specific to Outlook XP.]

When you type someone's name in the "To" field of a message, Outlook tries to figure out who you mean. It can look in more than one address book, and it's essential that it looks in your own Contacts first, else it'll auto-complete to some random person in the global address list (which in my company is pretty big). It won't even flag a "not-sure"; it just auto-completes to the wrong person.

It's easy to make it look in your Contacts list first, once you know how, but it's devilish hard to find out how. Here's what to do.

Install better fonts

Luca Cardelli's home page has a couple of nice fonts available under "Mac/PC resources". In particular, his LICS font has a menagerie of useful mathematical symbols that aren't available in any standard font.

To install a new font, just drag it into C:/WINNT/Fonts. You don't even need to reboot.

Stop booting with NumLock on

It has happened to me, both at home and at work, that my computer would boot up with NumLock on. (This makes it puzzling when you try to type the password to log on...). This setting somehow gets embedded in the guts of the boot process, for unknown reasons.

To fix it, add the line (found in the Microsoft Knowledge Base):


at the end of your C:\config.sys. Num lock will still turn on at the beginning of booting, but will turn off again before the end of booting. (This works for Win98; I don't know if it works for Win2k.)

Make the cmd shell have decent copy/paste

The default setup for copy and paste in the cmd shell is a huge pain. (You have to right-click, select Mark, and then select the bit you want to copy.) You can fix this: Now you can left-click and drag to select; right-click to put the selection on the clipboard and exit select mode; and right-click again to paste.

There are various other things you can change in the Properties pane for a cmd window, such as the background colour and window size. Thanks to Reenen Kroukamp for telling me about this.

Switch off the pesky MDM process

On my laptop, a background process MDM.exe used to appear, which seemed to cause hundreds of page faults a second even when I was doing absolutely nothing. Since I use my machine a lot for compiling, I reckoned I could do without it.

MDM is the Machine Debug Manager, and it is installed with Internet Explorer. Like me, you probably don't need it. Here is how to tun it off/disable it. Go to the Control Panels and click Internet Options. Click on the Advanced tab and check the box 'diable script debugging'. This should stop it appearing.

Work around the pesky foo.ps[1] problem

Using Internet Explorer, I often follow a link to someone's paper, with a filename like foo.ps.gz. In response to the popup box, I click on "Open this file from its current location"; zip files can't hurt you (I belive). IE downloads the zip file, and WinZip starts up automatically, which is all very wonderful. But alas, the file it displays is called foo.ps[1], rather than foo.ps, so I can't double-click on it in the WinZip window. I have no idea where the pesky "[1]" comes from.

The slow solution is to extract the file, rename it, and then double-click on it. Less slow is to right-click on it in the WinZip window, select "View...", and then select gsview as your viewer.

But the best (albeit hackish) solution is to tell Windows that ".ps[1]" is a suffix meaning "here's a Postscript file; run gsview". It's easily done. In an file browser window select "Tools/Folder Options" and click the "File Types" tab. Click "New". In the new dialogue window type "ps[1]" as the new file extension. In the same window, click "Advanced", and select "Postscript" from the huge list you are offered.

Now do the same for "ps[2]", "ps[3]". (I've never needed more.)

Access your Windows machine remotely

Windows now comes with Remote Desktop built-in, which lets you display your windows desktop on another (Windows) machine: look in "Start/All Program/Accessories/Communications/Remote Desktop Connection". However, you can only connect to a remote machine if the remote machine is willing to accept such connections. To make it willing: (Some time ago, a couple of people told me that VNC is a wonderful thing: http://www.realvnc.com/. It lets you display your windows desktop on a Unix machine or Mac, and vice versa. However I'm also told that it has a "general utter lack of security", so that running it may expose you to all sorts of bad things. Don't blame me!)

Make filename completion work in the cmd shell

[If you use the TweakUI thing above, you don't need this.] When you are typing commands to the standard cmd shell, filename completion doesn't work by default. Here's how to switch it on (thanks to Alex Buckley for this).

Instead of this rigmarole, you can just double-click complete.reg (you'll need to unzip first), which makes the above change to the registry. See notes about .reg files. The next command processor (cmd.exe) you run will perform tabbed filename completion. Tab completes the first filename with the given prefix; subsequent tabs cycle through the filenames with that prefix.

This doesn't work in Win95/8 because they only have the old command.com available as a command processor.

Info about your profile

Your "profile" is stored in WINNT/Profiles/<your-user-name>. If you have a roaming profile, like I do, some of this stuff gets copied to the main server when you log out, and sucked down when you log in, so it's desirable that it's not too big. In particular: On the other hand: Having a roaming profile on a laptop is a Bad Idea in my view. First, there's a danger that you'll get stuck on a dialup line dragging down a big profile. (Mind you, since you have to log in before you can dial up, this is unlikely to happen. But it can be awkward if you are connected when you log in, but then you disconnect later.) More important, with a roaming profile you share settings of your environment variables, such as $HOME. So then emacs (for example) will look for a .emacsrc file that isn't available when you are disconnected from the network.

You can change whether you have a roaming or local profile thus:
My Computer/Properties/Advanced/User Profiles Settings/Change Type/Local.

Changing this setting affects only the computer you change it on. A single account can have a roaming profile on one computer and a local profile on another.

Change what's started at boot time

Windows has many marvellous ways of changing what programs are run at startup time; e.g. what programs end up in your "system tray". I could never work out how to get rid of them, until Sigbjorn told me: msconfig works on Windows XP too, but I've not used it in anger.

Monitor power-saving and Exceed

For a long time I was frustrated because I could not persuade my desktop PC to switch off the monitor as it is supposed to. (Doing so saves a lot of power overnight, and all screens come with "Energy Star" stuff designed just for this purpose. It also extends the life of the cathode ray tube by turning off its electron-emitting heater filament.)

The problem turned out to be Exceed (at least in V7.0). Exceed is an X server that lets you display X windows on your machine. In its default configuration, Exceed prevents the screen switching off. To fix this:

Make the printer staple by default

I am fortunate enough to use a printer with a stapler, but it took me ages to discover how to make it staple by default. The same trick works for various other printer settings. What is particularly exiciting is that you have to make the same change in two places in the printer properties. If you only do it in one, it works for a few weeks, and then stops working. Don't ask me why, but it does.

Here's how to change the default behaviour:

In general, any settings you make here should be the default for all future printing on that printer.

You can also do this on a case-by-case basis. When you are about to print your document:

The properties change only for this one document, but they do seem to persist across successive printing of the same document from the same application.

Printing the first page (only) of a letter on printed letterhead

Your printer may have multiple paper trays, one loaded with headed paper. When printing a letter, you only want the first page to come from this tray. Here's how to achieve this glorious outcome.

Select "File/ Print..", choose your printer etc, then click the "Properties" button (top RH corner). Click "Advanced...". Find the bit that says "First page different", and open it up (click the "+" sign). Change the setting to "Enabled" and pick the media type. The latter step selects which paper try the printer will use, but unhelpfully in my set-up the "media type" setttings are things like "pre-printed" and "labels" rather than "Tray 1" , "Tray 2", etc. Quite how it knows which tray has pre-printed sheets is beyond me. I use trial and error to find the mapping.

Find out what a funny filename extension means

I occasionally come across a file with an extension (suffix) I don't recognise. There are quite a few web sites with a comprehensive list of what file extensions mean, but I didn't find them easy to find. Here are the ones I know about.

Make Adobe Acrobat start faster

[Note: I gather that this process does not work for version AcroRead 7.0. And in any case version 7.0 seems to start up much faster for me, so the fiddling isn't necessary.] Adobe Acrobat is the standard reader for PDF, but it starts up really slowly because it loads a bazillion plug-ins. You can trim the plug-ins, and hence greatly speed up start up as follows: Thanks to Ulfar Erlingsson for this tip.

Show full menus in Outlook

Outlook (2003 and later) shows you only the most recently used menu items; it shows the others after a short delay. If you don't like this, use Tools/Customize and check "Always show full menus".

Recover a gigabyte of disk space

If you are like me your hard disk is pretty full. A simple change in settings can save you almost 10% of your hard drive.

By default, Windows XP reserves 12% of the hard drive for something called restore points. These can be used to restore the system to a previous situation if you mess up the system with some install or other changes. This 12% can get used pretty fast when you install a lot of software. And 12% of your disk is a lot: 28GB drive * 12% # 3.36GB.

You can reserve less space, and so free up a lot. The downside is that you will not be able to restore the system to 10 restore points ago. I for one never used this options anyhow, so restoring just a few points back is plenty for me.

Don't forget to check the available space before and after you do it.

Useful freeware


Microsoft Powertoys is a bunch of small but useful tools. Ones I've used or had recommended include:


SysInternals is a collection of utilities (provided now by Microsoft) that do many good things. The one I have used is:


Launchy lets you launch appliactions with a few keystrokes, no mouse. (Similar functionality is built into Vista's Start menu.)

Perform useful tasks

Wake up your laptop's network connections

I often disconnect my laptop, which runs Windows 2000, from the network to move it around. When I do this I only suspend it; I don't log off or power down. The trouble is that often when I reconnect, the little green light on the connector comes on, but the network connection doesn't work at all. By trial and error, I've found a series of actions that usually fixes the problem. I used to reboot the machine, which was time-consuming, and often didn't help. But these steps seem to do the trick; don't ask me why. Try them in this order: they are arranged in order of increasing brutali