Всегда нравилось использовать команду 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
На каком из методов остановиться – решать вам.
Windows Server 2012 тоже самое. И также лечится.
Само наличие у одного пользователя одновременно двух параллельных сессий с разными правами у меня всегда вызывало подсознательный дискомфорт. Ну наконец-то кто-то продемонстрировал мне «грабли» воочию. Спасибо.
Это НЕ «параллельные» сессии. Это все в рамках одной..
Это от того, что MS перемудрили с UAC. То есть когда логин входит в Группу Локальных Администраторов, но .. при этом остается «не совсем администратором». Вот и приходится изгаляться. И наступать на эти грабли.
Именно так, не параллельные, а маркер администратора действительно не нужен при «обычной» работе.
Вспомним, как работает команда sudo. да точно также. Пока не повысишь привилегии, ничего не будет.
Попробовал себе представить «обычную» работу администратора на сервере. 🙂 Не получилось 🙂
А так да, в Windows 10 … наверное да. Но вот у меня даже VMware Workstation периодически ругается, что «not enough privileges». Пришлось ярлыку в опциях указать — Run as Administrator»
Ну а FAR запускать в непривелегированном режиме…, а зачем он тогда? Если в папке Windiws не можешь почти ничего ничего.
Спасибо, те ещё грабли
Это работает. Спасибо большое. Реально помогли.
Второй вариант сработал, сначала через администратора в powershell, потом без администратора и появилось. (win 10 )