“Грабли” Microsoft или “засада” с командой SUBST в новейших Windows 10 и 2016

Всегда нравилось использовать команду SUBST. Удобно это. И для старых программ, и для, например, “укорачивания” пути к сетевым папкам. Частенько пользователи создают пути такой длины, что только диву даешься.

И никак не ожидал, что тут рассыпаны “грабли” Microsoft.

В чем же это выражается. А в том, что теперь есть два типа сессий с которыми можно работать: standard и, так называемая, elevated (когда программа запускается от имени Администратора)

И вот что происходит. В standard сессии создаем (замещаем) папку буквой диска

Например так

SUBST T: C:\TEMP

Что получается?

Из стандартной командной строки – «новый» диск виден

И в Windows Explorer тоже виден

подключенный диск в Windows Explorer

А теперь запустем elevated command promt и Oops! А нет диска Т, как будто ничего не делали

subst в командой строке с правами администратора

Может сделать наоборот? Выполнить SUBST в elevated сессии?

Пробуем – работает

SUBST в elevated сессии

Запускаем Windows Explorer и … нет такой буквы

Windows Explorer нет такой буквы

Запускаем стандартную командную строку … снова нет

subst не работает

Ничего не напоминает? А мне напомнило. Точно также «не видны» сетевые шары подключенные командой 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

    отключить uac

  • Измените значение ключа с «1» на «0»

    "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system"

    REGEDIT4
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "EnableLUA"=dword:00000000

    enableua registry

  • Перегрузите ОС

Проверено – работает.

Метод 2: Подсмотрено в сети

Один из вариантов, до которых додумались в сети. Запустить SUBST два раза. В простой и elevated сессиях

Проверено – работает.

Метод 3: «Голь на выдумки хитра»

Этот метод мой собственный Напоминает старый анекдот «А у нас гланды удаляют. Автогеном. Через задний проход»

В чем суть. Используется не SUBST, а NET USE

Проверено — работает

Метод 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, с той лишь разницей, что его видно из всех сессий

обычная cmd

повышенная командная строка

И из Windows Explorer

Windows Explorer диски

На каком из методов остановиться – решать вам.


Предыдущая статья Следующая статья


Комментариев: 8 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)