Надеюсь, это не кросс-постинг, вот так ...
Subst не создает экземпляр монтирования ни в глобальном масштабе, ни внутри системного пользователя / NT Authority, поэтому сервер (apache) не может получить к нему доступ. Apache получает доступ через системную учетную запись и поэтому не может видеть точку монтирования (так называемую).
Исходя из этого: http://msdn.microsoft.com/en-us/library/aa363908%28v=VS.85%29.aspx
... кажется, что вы можете создать экземпляр глобально с помощью win api или, возможно, непосредственно в реестре, используя функцию или метод DefineDosDevice.
Любой способ, которым вы пытаетесь выполнить подстановку, даже используя что-то вроде RunAsSystem, чтобы попытаться применить команду subst в контексте системного пользователя, не даст жизнеспособного результата.
Однако я обнаружил, что при создании DosDevice в реестре у меня есть жизнеспособное монтирование 'subst', которое может использовать apache / mysql / php-win. Вы также можете найти способы сделать это через wmi, vb, c + и т. Д., И я не знаю, является ли (я сомневаюсь) метод реестра таким же, но вот он ...
Пример, я хочу: subst S: C: \ PortableUSB
файл asA.reg ...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"S:"="\\??\\C:\\PortableUSB"
Или, в реестре это будет выглядеть так (так что вы можете добавить его вручную) ...
Строковое имя «S:» (без кавычек. Используйте предпочитаемый вами DriveLetter, конечно)
Значение этой строки - "\ ?? \ C: \ PortableUSB" (без кавычек. Конечно, используйте свой собственный путь)
Требуется перезагрузка. Субстанция постоянна и доступна во всем мире. Я еще не знаю, насколько это надежно, но я до сих пор пользуюсь им с успехом.
TwoHawks