Всегда нравилось использовать команду SUBST. Удобно это. И для старых программ, и для, например, “укорачивания” пути к сетевым папкам. Частенько пользователи создают пути такой длины, что только диву даешься.
И никак не ожидал, что тут рассыпаны “грабли” Microsoft.
В чем же это выражается. А в том, что теперь есть два типа сессий с которыми можно работать: standard и, так называемая, elevated (когда программа запускается от имени Администратора)
И вот что происходит. В standard сессии создаем (замещаем) папку буквой диска
Например так
SUBST T: C:\TEMP
Что получается?
Из стандартной командной строки – «новый» диск виден
И в Windows Explorer тоже виден
А теперь запустем elevated command promt и Oops! А нет диска Т, как будто ничего не делали
Может сделать наоборот? Выполнить SUBST в elevated сессии?
Пробуем – работает
Запускаем Windows Explorer и … нет такой буквы
Запускаем стандартную командную строку … снова нет
Ничего не напоминает? А мне напомнило. Точно также «не видны» сетевые шары подключенные командой NET USE как было описано в статье https://winitpro.ru/index.php/2015/03/11/nework-disk-access-from-elevated-programs/
И там было решение. Здесь, по идее, тоже должно быть, подумалось мне. Далее была пара часов и экспериментов и вот что получается. Выхода стандартного нет. Рекомендаций нет. Но «костыли» забить можно.
Итак, по порядку.
Метод 1: «Метод» Microsoft
«Метод» Microsoft – это я так это решение назвал. Оно заключается в предложении … Отключите UAC!
Ну совсем костыль, на безопасность наплевали, но зато работает 🙂
Можно почитать об этом в TechNet — https://social.technet.microsoft.com/wiki/contents/articles/13953.windows-server-2012-deactivating-uac.aspx
Или просто:
- Отключите UAC через Control Panel
- Измените значение ключа с «1» на «0»
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system"
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "EnableLUA"=dword:00000000 - Перегрузите ОС
Проверено – работает.
Метод 2: Подсмотрено в сети
Один из вариантов, до которых додумались в сети. Запустить SUBST два раза. В простой и elevated сессиях
Проверено – работает.
Метод 3: «Голь на выдумки хитра»
Этот метод мой собственный Напоминает старый анекдот «А у нас гланды удаляют. Автогеном. Через задний проход»
В чем суть. Используется не SUBST, а NET USE
- Расшариваем на этом же компьютере нужную папку
- Подключаем ее как сетевой диск командой NET USE
- Не забываем добавить в реестр ключик из статьи https://winitpro.ru/index.php/2015/03/11/nework-disk-access-from-elevated-programs/
- Наслаждаемся жизнь.
Проверено — работает
Метод 4: Подсмотрено в сети (itpro)
Вбиваем «костыль» в реестр
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices" /v Z: /t REG_SZ /d "\??\C:\DirectoryName" /f
Где
- Z: – нужная вам буква диска
- C:\DirectoryName –необходимая вам пака, соответсвенно
Примечания:
- Данная команда проходит только из elevated (запущенной от имени Администратора) сессии
- Не забываем перегрузиться.
Проверено — работает. Диск появляется в системе, как после команды SUBST, с той лишь разницей, что его видно из всех сессий
И из Windows Explorer
На каком из методов остановиться – решать вам.