GrabDuck

Права на файлы в Win7: меняем в текущем сеансе пользователя

:

Добрый день, уважаемые хабра-жители!
Предисловие: время от времени необходимо выставлять права на отдельные папки и файлы для пользователей на работе. В XP это делалось легко и просто (способ, если кто не знает, под катом), а вот с выходом Vista и Seven — старый проверенный друг подвел меня. Давайте узнаем, как можно быстро выставить права на отдельные папки и файлы в Windows под текущим пользователем. Экономим время!

Итак, прежде всего способ, который проходит в Windows XP:
Запускаете cmd с правами администратора (это runas /user:domain\login cmd если вдруг кто-то забыл и там вводите волшебную команду — explorer /separate.

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

Но пришло время перемен и в более новых системах эта команда запустит проводник от текущего пользователя.
Можно, конечно, выставлять права через администраторские шары со своего рабочего места, или запускать от себя другие файловые менеджеры… Но иногда выставить права нужно здесь и сейчас, а установка лишней программы на компьютер, которой придется пользоваться раз в месяц — это неправильно.

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

Способ 1. Для любознательных и терпеливых

За разграничение прав проводника отвечает один из COM объектов. А именно — Elevated-Unelevated Explorer Factory.

Находится это чудо следующим образом:
Запускаете cmd с правами администратора — dcomcnfg и далее в настройке DCOM ищите параметр Elevated-Unelevated Explorer Factory.

и там ищите нашего спрятанного зверька:

Однако редактировать этот параметр вам скорее всего не дадут. Нет прав на изменение ветки реестра HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}
Когда нас останавливали такие пустяки? Делаем себя владельцем, изменяем права и снова запускаем dcomcnfg
УРА! Мы можем теперь выставить параметр на вкладке Удостоверение — Запускающий пользователь.

Муторно немного, да? Можно сразу редактировать ключик реестра — HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}\RunAs

  • значение Interactive User для текущего пользователя
  • удаление этого параметра для запускающего пользователя
  • имя пользователя для запуска проводника от какого-то конкретного пользователя

Возможно решить данный вопрос можно через политики, но увы -я такое не нашел, да и не применимо на работе у меня такое. Разве что приходит на ум батник на ключа реестра. Ну что же, первый способ мы осилили…

А теперь время магии.

Способ 2. Быстрый и веселый

Запускаем cmd от имени администратора, открываем блокнот, выбираем Открыть и отобразить все файлы и спокойно меняем права на файлы и папки.

Картинка, иллюстрирующая мои глаза в момент этого чудного открытия прилагается:

Благодарю за внимание!

UPD
Благодаря пользователю denis_g и нескольким другим линуксойдам, вспомнил, что давно читал про консольную команду управления правами доступа — CACLS
Раз ссылка на синтаксис
Два ссылка на синтаксис

Получается, добавление пользователя с правами на изменение делается так:

cacls PATH:\To\FILE /t /e /p username:C

Где переменные: /t — подкаталоги (для папок), /e — edit т.е. изменение существующих прав, /p — изменение пав пользователю (если нет — добавит), С — чтение.
Осторожно, сперва потренируйтесь, ибо можно снести в null все права на папку!

UPD2 у меня не заработал
Зажать SHIFT и выбрать «Запуск от имени другого пользователя» экзешника проводника…
image

UPD3 от пользователя tachidi
1) Убить в процессах explorer.exe
2) Запустить его от имени адмиинстраторской учеткой
3) Выставить необходимые парва
4) Не забыть вернуть все обратно!