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

Если вы используете подключенные сетевые диски (папки) на рабочих станциях, вероятно вы заметили, что они не доступны в программах (в том числе из командной строки и PowerShell), запущенных с правами администратора. Это вызвано тем, что стандартные настройки User Account Control (UAC) ограничивают доступ к подключенным сетевым дискам из приложений, запущенных в привилегированном режиме (через Run As Administrator). Это означает, что при запуске командной строки или файлового менеджера (того же, Total Commander) с правами администратора, в них будут не отображаться буквы дисков сетевых папок, смонтированных в стандартном контексте пользователя.

Это поведение Windows по-умолчанию, которое наблюдается, если выполняются следующие условия

  • В сессию пользователя подключены сетевые диски (через GPO, вручную через net use или командлет New-SmbMapping )
  • На компьютере включен UAC (параметр GPO User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode имеет значение по-умолчанию Prompt for credentials значение по-умолчанию “Prompt for credentials”)политика UAC Behavior elevation prompt
  • У текущего пользователя есть права локального администратора на компьютере, и он запускает приложение в режиме Run as administrator

В этом случае сетевые диски будут отображаются в проводнике Windows и в программах, но недоступны в любых приложениях, которые пользователь запустил с правами администратора.

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

В этой заметке мы покажем, как в Windows разрешить доступ к сетевым дискам из программ, запущенных от имени администратора.

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

Не отображаются сетевые диски в приложениях с правами администратора

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

Например, откроем командную строку с правами пользователя и проверим что мы можем получить доступ к содержимому подключенного сетевого диска Z:\ .

Net use
Dir z:

Команда вывела содержимое сетевой папки.

Доступ к сетевому диску из сессии пользователя

Если в контексте этого же пользователя открыть окно командной строки с правами администратора, то при попытке получить доступ к этому же диску, появится сообщение, что указанный путь не найден:

The system cannot find the path specified.
Системе не удается найти указанный путь.

нет доступа к подключенной сетевой папке из командной стрки с правами администартора

Ниже на скриншоте приведен пример приложений 7Zip, в котором одно окно запущено с правами администратора, а второе с правами обычного пользователя. В приложении, запущенном с правами администратора, не отображается ни один из подключенных сетевых дисков. Доступны только локальные диски.

В программе 7zip с правами админа не отображаются сетевые диски, подключенные пользователю

Такое поведение системы может вызывать ряд неудобств при частом запуске приложений в привилегированном режиме. Можно запускать приложения без прав администратора, но это не всегда применимо.

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

При включенном UAC приложения под одним пользователем могут запускаться в двух контекстах (привилегированном и непривилегированном). При подключении общих сетевых папок, система создает символические ссылки ( DosDevices ), в которых хранится сопоставление буквы диска и UNC пути. Эти ссылки ассоциируются с текущим сеансом для текущего маркера доступа процесса и недоступны из-под другого маркера.

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

Чтобы сделать сетевые диски, подключенные у пользователя, доступными в приложениях с правами администратора, надо создать на компьютере параметр реестра EnableLinkedConnections :

  1. Откройте редактор реестра (regedit.exe)
  2. Перейдите в раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. Создайте новый параметр (типа DWORD) с именем EnableLinkedConnections и значением 1 Параметр реестра EnableLinkedConnections
    Совет. Можно создать параметр реестра командой:
    New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLinkedConnections -Value 1 -PropertyType 'DWord'
  4. Перезагрузите компьютер (или перезапустите службу LanmanWorkstation командой PowerShell: Get-Service LanmanWorkstation |Restart-Service –Force , и перезайдите в систему).

Проверьте, что теперь сетевые диски пользователя отображаются в приложениях, запущенных с правами администратора (такие процессы в Task Manager отображаются со свойством Elevated=Yes).

Процесс запущен с правами администратора

Это работает во всех версиях Windows, начиная с Vista и заканчивая Windows 11 / Windows Server 2025.

В обратную сторону это тоже работает: все сетевые диски, подключенные в контексте привилегированной сессии, будут доступны и в обычной сессии.

Доступ к сетевым дискам (net use) из прилжения, запущенного с повышенными правами

Совет. В групповых политиках отсутствует опция для такой настройки поведения сетевых дисков. Поэтому для применения этих настроек на компьютеры домена придется распространить указанный параметр реестра через GPP.

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

Совет. В качестве альтернативного решения можно предложить создать символическую ссылку на целевой сетевой каталог. Например, так:
mklink /D c:\docs \\msk-fs1\docs
Доступ к данному каталогу будет возможен и в обычном, и в привилегированном режиме. Из недостатков метода, отметим, что доступ на общую папку выполняется с полномочиями текущего пользователя. Нельзя, как в случае с net use, использовать учетную запись другого пользователя.

После включения параметра EnableLinkedConnections сетевые диски также станут доступны из заданий планировщика, запущенных из-под текущего пользователя. Если задание запускается от имени LocalSystem или другого пользователя, сетевые диски текущего пользователя, естественно, будут недоступны. Ведь сетевые диски подключаются для каждого пользователя персонально (per-user).


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


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

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

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

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