Граблі 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_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

На якому з методів зупинитися - вирішувати вам.