Доступ к сетевым дискам из программ, запущенных с повышенными привилегиями | Windows для системных администраторов

Доступ к сетевым дискам из программ, запущенных с повышенными привилегиями

Одним из существенных улучшений системы безопасности ОС семейства Windows (начиная с Vista) являлось внедрение функционала User Account Control (UAC). Контроль учетных записей запрашивает подтверждение пользователя каждый раз, когда запускаемая программа пытается внести изменения в параметры системы. Одним из побочных эффектов работы UAC является невозможность доступа к подключенным (через net use) сетевым дискам из приложений, запущенных в привилегированном режиме (Run As Administrator). Это означает, что при запуске командной строки или файлового менеджера (того же, Total Commander) с повышенными правами, в них будут отсутствовать буквы дисков смонтированных сетевых папок.


В этой заметке мы покажем, как в Windows 10, Windows 8, Windows 7 и Windows Vista предоставить доступ к сетевым дискам из приложений в привилегированном режиме (запущенных от имени администратора).

Важно. Настоятельно не рекомендуется совсем отключать UAC, даже для одного конкретного приложения.

Действительно, при включенном UAC из «привилегированного» приложения в Windows нельзя получить доступ к замапленному в обычном режиме сетевому диску. Продемонстрируем, как выглядит проблема. Например, убедимся, что в командной строке, запущенной с правами обычного пользователя системы, имеется доступ к содержимому подключенного сетевого диска Z:\. Доступ к сетевому диску из сессии пользователя Если в контексте этого же пользователя открыть окно командной строки с правами администратора, то при попытке получить доступ к этому же диску, появится сообщение, что указанный путь не найден:

The system cannot find the path specified.

The system cannot find the path specifiedТакое поведение системы может вызывать ряд неудобств при частом запуске приложений в привилегированном режиме.

Почему это происходит? Данная особенность связана с механизмом работы UAC для пользователя с правами локального администратора. Дело в том, что при входе такого пользователя в систему создаются два маркера доступа: один маркер доступа с отключенными правами администратора (маркер фильтрованного доступа – из под которого запускаются большинство программ) и маркер полноценного администратора, обладающего полными правами в системе (в этом контексте выполняются все программы, получившие подтверждение на повышение прав в UAC).

При подключении общих сетевых папок, они ассоциируются с текущим сеансом для текущего маркера доступа процесса и из-под другого маркера недоступны.

Совет. В качестве обходного решения можно порекомендовать подключать (через net use) сетевые диски в контексте командной строки, запущенной с правами администратора. Но это решение не всегда применимо, и не очень удобно.

Есть более простое решение, для его реализации нужно внести следующие изменения в реестр:

  1. Откройте редактор реестра (regedit.exe)
  2. Перейдите в раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. Создайте новый параметр (типа DWORD) с именем EnableLinkedConnections и значением Параметр реестра EnableLinkedConnections

    Совет. То же самое можно сделать одной командой:

    reg add «HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System» /v «EnableLinkedConnections» /t REG_DWORD /d 0x00000001 /f
  4. Перезагрузите компьютер

После перезагрузки убедитесь, что доступ к сетевым дискам из программ, запущенных с правами администратора, заработал.

Доступ к сетевым дискам (net use) из прилжения, запущенного с повышенными правамиКак это работает. После включения параметра реестра EnableLinkedConnections, служба LanmanWorkstation и LSA будут проверять наличие второго маркера доступа, связанного с сессией текущего пользователя. Если такой маркер доступа будет обнаружен, список подключенных сетевых дисков будет скопирован из одного маркера в другой. Таким образом сетевые диски, подключенные в привилегированном режиме, будут видны в обычном и наоборот.

Совет. В качестве альтернативного решения можно предложить создать символическую ссылку на целевой сетевой каталог. Например, так

mklink /D c:\docs \\msk-fs1\docs

Доступ к данному каталогу будет возможен и в обычном и в привилегированном режиме. Из недостатков метода, отметим, что доступ на общую папку выполняется с полномочиями текущего пользователя. Нельзя, как в случае с net use, использовать учетную запись другого пользователя.

Еще записи по теме: Windows 8
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 2

Оставить комментарий
  1. dude | 13.03.2015

    Спасибо, как раз на днях была проблема с обновлением дрвеба по сети, теперь знаю в чем дело

    Ответить
  2. Sergey | 27.10.2016

    Данный метод не работает на windows 10, и 2012 r2 после обновления, есть ли новые решения ?

    Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

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

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



MAXCACHE: 0.24MB/0.00166 sec