“Грабли” Microsoft или “засада” с командой SUBST в новейших Windows 10 и 2016
Всегда нравилось использовать команду 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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciessystem"
REGEDIT4
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem] "EnableLUA"=dword:00000000 - Перегрузите ОС
Проверено – работает.
Метод 2: Подсмотрено в сети
Один из вариантов, до которых додумались в сети. Запустить SUBST два раза. В простой и elevated сессиях
Проверено – работает.
Метод 3: «Голь на выдумки хитра»
Этот метод мой собственный Напоминает старый анекдот «А у нас гланды удаляют. Автогеном. Через задний проход»
В чем суть. Используется не SUBST, а NET USE
Проверено — работает
Метод 4: Подсмотрено в сети (itpro)
Вбиваем «костыль» в реестр
reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerDOS Devices" /v Z: /t REG_SZ /d "??C:DirectoryName" /f
Где
- Z: – нужная вам буква диска
- C:DirectoryName –необходимая вам пака, соответсвенно
Примечания:
- Данная команда проходит только из elevated (запущенной от имени Администратора) сессии
- Не забываем перегрузиться.
Проверено — работает. Диск появляется в системе, как после команды SUBST, с той лишь разницей, что его видно из всех сессий
И из Windows Explorer
На каком из методов остановиться – решать вам.
Windows Server 2016
“Грабли” Microsoft или “засада” с командой SUBST в новейших Windows 10 и 2016