Downloads
97078.zip

Executive Summary:

In Windows Vista, Windows Server 2003, and Windows XP, Microsoft includes the System Configuration Utility (msconfig.exe). Msconfig.exe lists and lets you disable certain items that run automatically when you log on. After you reboot the machine, msconfig.exe displays a confirmation dialog box that notes the computer's configuration has changed. In a technical support environment, this dialog box can worry end users who aren't familiar with it. Here are three ways to prevent that dialog box from appearing.

I use Microsoft's System Configuration Utility (msconfig.exe) almost every time I set up or troubleshoot a Windows system. Msconfig.exe gives me a one-stop resource for checking startup items and installed services in an arbitrary collection of installed software and for disabling the items I think shouldn't be running. However, when you change the system configuration through msconfig.exe, the utility always pops up the confirmation dialog box that Figure 1 shows after you reboot the machine. This can be a significant irritation in a technical support environment.

For power users making their own configuration changes, the post-boot confirmation dialog box is useful. It reminds them that they changed their computer's configuration, and they know to dismiss the confirmation dialog box. However, when you use msconfig.exe as a support technician, the confirmation dialog box is a cosmetic flaw that worries end users who aren't familiar with it. Of course, you should reboot a machine after modifying persistent settings and verify that everything works, but "should" is a fuzzy term. It might not be feasible to wait for a reboot. You might be changing many systems rapidly, working on a server in active use, or using Remote Assistance to help a user who needs to keep working.

Msconfig.exe runs on reboot by inserting an entry named MSConfig under the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. To prevent the dialog box from showing up, you can manually delete the MSConfig entry, use the Console Registry Tool (reg.exe) to delete it, or use a batch file to delete it.

Manually Deleting the MSConfig Entry
If you're working on a remote machine or you're in a location in which there aren't any registry tools available, you can manually delete the MSConfig entry. After using msconfig.exe, close it. Then run regedit, navigate to the MSConfig entry, and manually delete that entry.

Using Reg.exe
You can use reg.exe to automatically delete the MSConfig entry in the registry. To delete the MSConfig entry on the local machine, open cmd.exe and run the command

reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v msconfig /f

In this command, delete tells reg.exe to perform a delete operation in the specified key HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. The /v switch tells reg.exe the entry to delete, which in this case is MSConfig. By default, reg.exe will prompt you before deleting an entry; including the /f switch tells reg.exe to skip this prompt.

One of the niceties of reg.exe is that it works on remote machines as well local machines, so you can run the command remotely if necessary. For example, to delete the value on a remote workstation named WS42, you would use the command

reg delete \\WS42\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v msconfig /f

However, you're limited to deleting the MSConfig entry one remote machine at a time. In this situation, manually deleting the MSConfig entry is as fast as using reg.exe and doesn't require you to remember the reg.exe command's syntax. So what's the point in using reg.exe? When you have to delete the MSConfig entry on multiple machines, your best bet is to use a batch file.

Using a Batch File
I keep a batch file named RunCleanMsconfig.cmd, which Listing 1 shows, in a scripts folder on a USB drive I take with me on support calls. (On a LAN, the script winds up in a universally available directory, which is mapped in my profile.) Instead of running msconfig.exe, then deleting the MSConfig entry, I run RunCleanMsconfig.cmd. This script runs msconfig.exe for me, and when I exit, it automatically deletes the MSConfig entry from the registry. There's no extra work involved other than opening the USB drive or LAN folder (or typing the name if it's in a search path).