Download Fixpath2.zip and unzip it. FIXPATH.EXE is the program, and FIXPATH.TXT contains:

FIXPATH - (C) 2004 by Bill Stewart (bstewart@iname.com)

BACKGROUND

I'm a regular in the microsoft.public.win2000.cmdprompt.admin newsgroup, and
the following type of question is one we see quite often:

"Why doesn't my ping \[or ipconfig, or net, or whatever\] command work?"

Some users have noticed that if they manually change to their system32
directory, the commands start working again.

Magic! No, not really, once you understand how the operating system searches
for commands. A simplified overview is below:

  1. If the command includes a directory name, the command interpreter (usually
     cmd.exe) checks if the specified executable exists in the specified
     directory. If it exists there, the command interpreter runs the
     executable; otherwise, it reports an error message.

  2. If the command does not include a directory name, the command interpreter
     checks the current directory for a matching program. If the program is
     found, the command interpreter runs it; otherwise, it skips to the next
     step.

  3. The command interpreter searches each directory specified in the Path
     environment variable in order, for a matching program. If it exists in any
     directory in the path, the command interpreter runs it; otherwise, it
     reports an error message.

So, then, the first thing you should check is the Path environment variable.

However, this is just slightly more complex than you might expect at first
blush. When Windows is first installed, it configures a Path setting as
follows:

  %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\Wbem

This setting is stored in the Path value in the registry in the following
registry key:

  HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

The setting must be of type REG_EXPAND_SZ, which tells Windows that the
registry value contains environment variable values to be expanded. In other
words, if you look at your Path setting in the Environment Variables dialog box
(right-click My Computer, click Properties, etc. etc. etc.), you'll see the
percent signs, but if you type the command "set path" at a command line, you'll
see them expanded correctly.

So then, there are two conditions that determine a "correct" Path setting:

  1.  It must be of type REG_EXPAND_SZ
  2.  It must contain the minimum required directories

The most likely cause of problem #1, above, is an incompetently-written
installation program that attempts to update the Path and gets it wrong. #2
might be caused by an upgrade to Windows 2000/XP/whatever from some earlier
version.

This program, FIXPATH.EXE, attempts to fix these problems, if detected.

It was written in Pascal and can be compiled with the Win32 version of the Free
Pascal compiler (http://www.freepascal.org/).

VERSION HISTORY

See source code (FIXPATH.PP) for the version history.

SYSTEM REQUIREMENTS

Windows 2000 or later.

RUNNING THE PROGRAM

Open a command prompt window, and run FIXPATH.EXE.

It will display some preliminary information, and ask if it should continue.

If it successfully updates the Path value in the registry, you will need to
reboot for the change to take effect.

You can run the program without user interaction by specifying /Q on the
command line; e.g. 'FIXPATH /Q'.

COMMON MESSAGES

"RegOpenKeyEx returned error 5."

  You don't have enough permissions to modify the registry. Error 5 means
  "access denied." For any message that returns an error number, you can use
  "net helpmsg x" (where x is the number) to see the text version of that error
  number.

"Error! Path value not found in registry!"

  Just what it says. The Path value is missing. FIXPATH will attempt to create
  the value with the correct data type and contents.

"Error! The registry value type is not REG_EXPAND_SZ!"

  The Path value is the wrong data type. FIXPATH will try to fix this.

"Error! The minimum required directories were not found in the Path!"

  The Path value doesn't start with the correct directories. FIXPATH will
  try to fix this also.

Let me know if you get any other error messages.

Bill Stewart
bstewart@iname.com