| Comments: |
использовать cacls в шелле?
Я так понимаю, человек не ищет лёгких путей, и с powershell разбираться не желает. Иначе VBA даже и не упоминал бы.
Не, ну можно и разобраться. Куда там тыцать, чтобы с нуля не изучать? хехе
Спасибо! Если не найду прямого обращения к API, так и сделаю. Ух!
хехе
С учетом того, что папок овер 1000, а групп пользователей 6-7... рррраххх! С другой стороны, железка же, пущай работает.
хехе
Вот поэтому и батч. Иначе у вас в цикле 1000 окон откроется, и все рухнет.
О! Запустить шелл из-под Экселя - во-первых, будет красиво.
хехе
Ну, я бы из эксела создалбы батч файл, а уже потом запускал его. Чтобы одновременно 1000 процессов не запустились, так как контролировать окончание шелла из Экселя это отдельная песня.
Це дило. С эвентами мне совсем уже некогда разбираться, работать еще надо. хехе
Лексической редупликации камент. хехе
| From: | yalexey@lj |
| Date: | February 27th, 2017 - 04:46 pm |
|---|
| | Вот это нагуглилось | (Link) |
|
| From: | probegi@lj |
| Date: | February 27th, 2017 - 04:48 pm |
|---|
| | Re: Вот это нагуглилось | (Link) |
|
Ага, спс! Позырю про SetAccess.
Excel же тогда под правами админа придётся запускать. И, если через API делать, то гимор будет с адаптацией Win32API к требованиям x64 (Excel, полагаю, у Вас x64).
Посему пока ход мысли у меня такой: скрипт Excel должен генерировать строки VBS-скрипта на основе имеющейся таблицы дерева папок. А затем уже копировать получившийся VBS-скрипт и запускать его as administrator.
Права админа мы найдем. API же работает само, на то оно и API. Где функцию вызвал, там она и работает. Решение выше подсказали, не знаю, насколько эффективенее, чем если через VBS. Мне все равно на один-два раза.
хехе
В общем, похоже проще всего даже не VBS генерировать, а обычный .bat-файл с командой icacls в соответствующем формате. Так думаю.
Похоже, в итоге алгоритм использовал бы такой:
Сначала пройтись по всему дереву папок и по всему множеству пользователей командой
icacls [имя_папки] /deny [имя_пользователя]:F
Всё будет запрещено всем.
Следующий проход - предоставить права чтения сочетаниям пользователь-папка командой
icacls [имя_папки] /grant [имя_пользователя]:R
Ну а последний проход - то же самое проделать с правами полного доступа командой
icacls [имя_папки] /grant [имя_пользователя]:F
Всё это в батнике без использования VBS. Только если там русскоязычные имена, то сохранять придётся в OEM-866.
> то сохранять придётся в OEM-866
man chcp
%бать я лох... век живи - век учись. Премного благодарен.
Фигня вопрос, обращайтесь.
Офис x64 - глючное говно. Я тут как-то поставил случайно, и стал ловить кучу ошибок, включая ошибки windowsupdate. Долго мучился. Дошёл до MSDN, а там написано, что это его обычное поведение, и в продакшене рекомендуется версия x32 для всех случаев, когда размерности индексов хватает под задачи.
Вот удивляет сие, как так можно, с ещё давней статейки на каком-то из официальных MS-блогосайтов "Смотрите, нам пришлось поменять всего 73% кода notepad, чтобы перекомпилить исходники старого 32-битного для работы в 64-битной WinXP (или NT 4, не помню уже)". Швабодники иногда выкидываю кунштюки, но, например, у того же RHEL (ладно, CentOS) я как-то и не заметил момента, когда в дистрибутиве рядом с i386 каталогом появился x86_64.
Есть подозрение, что legacy code notepad может содержать куски 30 летней давности.
Ядру линукса стукнет (сверился) 26 лет в этом году, так что есть подозрение, что они там насиловали труппродолжали перепиливать исходники notepad'а от ещё первой винды.
16-битные. Это все обьясняет.
>Excel же тогда под правами админа придётся запускать.
Необязательно. Главное, чтобы были полные права на корневой каталог, внутри которого все эти деревья будут.
VBA вообще не нужен. 1) cacls-команды собираются конкатенациями в одном столбце, этот столбец копируется в клипборд 2) .cmd файл открывается на запись 3) в него копируется текст из клипборда (возможно, стоит в первой строке сбросить все права командой вида "cacls X:\ /R Everyone /E" ) 4) .cmd файл сохраняется и запускается на исполнение в нужном контексте 5) профит!
Аналогичным способом можно готовить SQL-батчи для баз данных.
Не, ну просто саму же структуру я вебеой создаю, пусть уж оно и бач-файл состряпает заодно.
хехе
я просто параноик и хочу всегда ВИДЕТЬ то, что я запускаю с системными правами а то потом придется собирать данные из лапши ... плавали, знаем
Поэтому перенос данных из старой структуры в новую будет ручным. Упорядочение хаоса нельзя доверять компьютерам.
хехе
На одной из моих предыдущих работ тётки такой режим работы символично называли «врукопашную».
Между прочим, если структура и права статичные, то сошёл бы архив структуры с правами (пишут, что WinRAR умеет ACL'ы). Создаём каталог, кликаем на архиве, "Распаковать в...". | |