Cmd.exe does not support UNC names as the current directory


When you call out CreateProcess on Cmd.exe, for example:
CreateProcess(NULL, "cmd /c copy file1 file2", ....),
and the current directory has been set to a universal naming convention (UNC), Cmd.exe returns the following message:
'<UNC path>' is an invalid current directory path. UNC paths are not supported.
Defaulting to Windows directory.


Cmd.exe checks to verify if a UNC name is used for the current directory. It does this because a UNC name may cause problems with child processes launched from such a console when that console is exited or halted. Microsoft Windows NT versions prior to 4.0 did not check this; thus it was possible to use a UNC name as a current directory.


Obtain the updated Cmd.exe. You must also make a registry entry to be able to use a UNC path as the current directory.

WARNING: Using Registry Editor incorrectly can cause serious, system-wide problems that may require you to reinstall Windows NT to correct them. Microsoft cannot guarantee that any problems resulting from the use of Registry Editor can be solved. Use this tool at your own risk.

Under the registry path:

\Command Processor

add the value DisableUNCCheck REG_DWORD and set the value to 0 x 1 (Hex).

WARNING: If you enable this feature and start a Console that has a current directory of an UNC name, start applications from that Console, and then close the Console, it could cause problems in the applications started from that Console.


Microsoft has confirmed this to be a problem in Windows NT version 4.0. This problem was corrected in the latest Microsoft Windows NT 4.0 U.S. Service Pack. For information on obtaining the service pack, query on the following word in the Microsoft Knowledge Base (without the spaces):

รหัสบทความ: 156276 - การตรวจสอบครั้งสุดท้าย: 31 ต.ค. 2006 - ฉบับแก้ไข: 1