В современных версиях Windows проводник (File Explorer) всегда запускается с минимальными привилегиями. Даже если щелкнуть по исполняемому файлу
C:\Windows\explorer.exe
и запустить его в режиме Run as administrator, повышения привилегий не происходит. В этой статье мы рассмотрим мало известный способ запуска File Explorer в привилегированном режиме с правами администратора.
У вас не разрешений на доступ к этой папке; нажмите Продолжить, чтобы получить постоянный доступ
При работе с проводником Windows (File Explorer) под учетной записью, которая добавлена в группу локальных администраторов (или даже под встроенным администратором Windows), довольно часто приходится открывать системные каталоги, профили других пользователей или редактировать защищенные системные файлы. При попытке открыть такой каталог или файл с помощью проводники в текущем контексте, появляется предупреждающее окно UAC о необходимости предоставить доступ и повысить привилегии.
Как это выглядит: попробуйте в проводнике открыть системный каталог C:\Windows\System32\Config. Должно появится окно User Account Control, сообщающее о том, что у вас доступа к каталогу нет (You don’t currently have permission to access this folder. Click Continue to permanently get access to this folder). Но доступ можно получить через повышение привилегий UAC, нажав кнопку Continue.
Когда вы нажимаете Continue, UAC временно повышает привилегии вашего процесса explorer.exe и предоставляет вашей учетной записи NTFS права для доступа к данному каталогу (Full Control).
Известные проблемы такого подхода:
Все бы ничего, но после выполнения такой операции в NTFS разрешениях на папку явно прописывается ваша учетная запись. Хотя все, что вы хотели – просмотреть содержимое каталога, а не менять его ACL! А если у вас на сервере несколько администраторов? Тогда каждый из них при доступе к папке внесет строку доступа для своей учетки и ACL каталога будет постоянно расти.
В результате все программы, запущенные от вашей учетной записи в непривилегированном режиме, получат неограниченные права к папке. И даже если исключить эту учетную запись из группы администраторов, в NTFS разрешениях каталога останутся права Full Control.
\\msk-fs01\shared\
). В этом случае при доступе к каталогу не нужно повышать привилегии, соответственно, не происходит изменение NTFS разрешений.Естественно, при активной работе с системными файлами или каталогами пользователей это выскакивающее уведомление UAC начинает раздражать. Т.к. отключать ради этого UAC совершенно не хочется, пришлось найти собственный способ запуска процесса Проводника (Exploler.exe)
Как запустить проводник от имени администратора в Windows 10/Windows Server?
Процесс Windows Explorer запускается при входе пользователя в систему со стандартным токеном доступа пользователя. Стандартами средствами повысить привилегии для проводника нельзя. Запустить второй процесс в режиме “Run as admin” также не получится (такой запуск блокируется процессом
CreateExplorerShellUnelevatedTask
). Windows File Explorer не поддерживает запуск нескольких экземпляров процесса explorer.exe в разных контекстах безопасности в интерактивном сеансе пользователя. Поэтому, сначала нужно завершить текущий процесс explorer.exe в вашем сеансе.
Вы можете завершить процесс explorer.exe из Task Manager или следующей командой в консоли PowerShell (обязательно запустите
powershell.ex
e с правами администратора):
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
SUCCESS: The process "explorer.exe" with PID 3028 has been terminated.
Чтобы запустить процесс explorer.exe с правами администратора, воспользуйтесь командой:
c:\windows\explorer.exe /nouaccheck
Данные команды завершат процесс explorer.exe для текущего пользователя и запустят новый процесс, который унаследует повышенный маркер доступа, с которыми запущена консоль powershell.exe.
Или можно запустить новый привилегированный процесс проводника из Task Manager -> File -> Run New Task -> explorer.exe /nouaccheck (обязательно включите опцию Create this task with administrative privileges).
Проверим, что Проводник Windows теперь запущен в привилегированном режиме. Для этого откройте диспетчера задач (Task Manager) и перейдите на вкладку Details. Щелкните ПКМ по любой колонке, выберите Select columns и включите отображения столбца Elevated.
Как вы видите, у процесса explorer.exe теперь появился атрибут Elevated=Yes.
Теперь вы можете в File Explorer открыть любую системную папку или файл без предупреждений UAC. Кроме того, все дочерние процессы, запущенные из проводника, также будут обладать повышенными правами.
К примеру, это удобно когда нужно отредактировать файл hosts (c:\windows\system32\drivers\etc), открывая его блокнотом прямо из проводника, без необходимости открывать отдельный процесс notepad.exe с правами администратора или от имени другого пользователя.
Если вам часто нужно запускать explorer.exe в привилегированном режиме, можно создать на рабочем столе bat или ps1 файл с данными командами.
Когда вы закончите работу с защищенными папками, обязательно перезапустите explorer.exe в обычном режиме:
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
c:\windows\explorer.exe
Как вы видите, теперь значение Elevated у процесса explorer.exe изменилось на No.
Данный трюк с запуском процесса проводника Windows с повышенными правами работает как в Windows Server 2016/2019, так и во всех билдах Windows 10.
Может, на сервере такое и работает, но в клиентской ОС — нет. Там нужно иначе: Завещание мистера Гейтса.
На практике это редко нужно. На первой картинке же написано, что одобрение запроса дает постоянный доступ к папке.
Вадим, вы правы на клиентах Windows 8.1 / Windows 10 этот фокус не работает.
Возможно на персональной однопользовательской системе это и не нужно. Но на серверах, на мой взгляд, так удобнее. Да и NTFS разрешения на папку не утяжеляются.
Спасибо, помогло мне зайти в теневую копию. А то копия как бы есть, но при нажатии открыть — нету доступа. Хотя пользователь входит в локальные администраторы, а у группы есть все разрешения
А раздавать доступа на каждую шаровую папку себе или любому другому админу лично — не по феншую
На серверах это очень нужно! На всех директориях по умолчанию выставляется «пользователи домена» на чтение и все это inherited от корня. Скажем вы хотите дать шару, выделить конкретных пользователей в NTFS, рестриктить на уровне smb не удобно, намного надежнее и правильнее убрать группу users, оставить систему\лок админов и искомую группу кому нужен доступ, и представим себе что эта папка еще и в DFS участвует. Что тогда? несмотря на то что твоя учетка находится в лок админах, без явного повышения прав — доступ к директории ты не получишь, а если нажмешь «ок» — система пропишет тебя явно, а так как это дфс, и внутри может быть десятки тысяч файлов, служба начнет реплицировать все это между всеми нодами…. не очень это все хорошо
Все верно.
Как обходной трюк — можно управлять NTFS разрешениями на папки через UNC путь (\\server1\share1\). В этом случае при доступе к каталогу не нужно повышать полномочия, соотвественно не происходит изменение разрешений.
Кажется это перестало работать и на серверах (WS2016)
function Start-ExplorerElevated {
$systeminfo = Get-CimInstance -ClassName Win32_OperatingSystem
if ($systeminfo.Caption -match "2016"){
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
c:\windows\explorer.exe /nouaccheck
Write-Host "Host 2016"
}
elseif ($systeminfo.Caption -match "2012"){
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
Start-Process explorer.exe
Write-Host "Host 2012"
}
else{
Write-Host "Another Host"
}
}
Start-ExplorerElevated
.SYNOPSIS
Предоставление повышенных привилегий для процесса Explorer
.DESCRIPTION
Происходит проверка версии ОС через WMI (Get-CimInstance) для WS2012r2 и WS2016.
При нахождении соответствия запускаем поиск процессов Explorer от учетной записи PS сессии ($env:UserName) и останавливаем их.
Далее запускам Explorer с повышенными правами.
Благодарю! Метод действительно рабочий.
Запуск explorer с параметром explorer.exe /nouaccheck работает не только в Windows Server, но и в десктопной Windows 10
Давно пользуюсь total commander который сразу и запускаю с полными правами
На XP это не срабатывает, а параметр /nouaccheck вообще не распознаётся.
В XP это работало по-другому
runas /user:ComputerName\AdminName "C:\WINDOWS\explorer.exe /separate"