Живой роман Пробежего - Любителям программирования гланд через жопу [entries|archive|friends|userinfo]
probegi

[ website | Роман жизненных наблюдений поэта и литератора ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Любителям программирования гланд через жопу [Feb. 27th, 2017|11:26 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Вы будете смеяться, но я настолько отстал от жизни, что все позабыл. В угасающей памяти остались только вялые навыки программирования на VBA. Ну, вот, нарисовал скрипт, который создает в нужном месте развесистую структуру папок. Решение тупое: прописывается структура на листе екселя (конечно, можно и инишку создать, да зачем), скрипт ее обходит и плодит развестистое-преразвесистое дерево каталогов. Ну вот надо мне, чисто чтобы руками двестипиццот деревьев не копипастить.

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

Тут-то и см. п.1, сугубо. Коллеги, помогите, что мне надо declare и какой объект ковырять? FSO не предлагать, там хуй.

хехе
LinkLeave a comment

Comments:
[User Picture]
From:[info]alikr@lj
Date:February 27th, 2017 - 04:38 pm
(Link)
использовать cacls в шелле?
From:[info]yalexey@lj
Date:February 27th, 2017 - 04:45 pm
(Link)
Я так понимаю, человек не ищет лёгких путей, и с powershell разбираться не желает. Иначе VBA даже и не упоминал бы.
From:[info]probegi@lj
Date:February 27th, 2017 - 04:46 pm
(Link)
Не, ну можно и разобраться. Куда там тыцать, чтобы с нуля не изучать?
хехе
From:[info]probegi@lj
Date:February 27th, 2017 - 04:56 pm
(Link)
Спасибо!
Если не найду прямого обращения к API, так и сделаю.
Ух!

хехе
From:[info]probegi@lj
Date:February 27th, 2017 - 05:02 pm
(Link)
С учетом того, что папок овер 1000, а групп пользователей 6-7... рррраххх!
С другой стороны, железка же, пущай работает.

хехе
[User Picture]
From:[info]alikr@lj
Date:February 27th, 2017 - 05:02 pm
(Link)
Вот поэтому и батч. Иначе у вас в цикле 1000 окон откроется, и все рухнет.
From:[info]probegi@lj
Date:February 27th, 2017 - 04:51 pm
(Link)
О! Запустить шелл из-под Экселя - во-первых, будет красиво.

хехе
[User Picture]
From:[info]alikr@lj
Date:February 27th, 2017 - 05:01 pm
(Link)
Ну, я бы из эксела создалбы батч файл, а уже потом запускал его. Чтобы одновременно 1000 процессов не запустились, так как контролировать окончание шелла из Экселя это отдельная песня.
From:[info]probegi@lj
Date:February 27th, 2017 - 05:03 pm
(Link)
Це дило. С эвентами мне совсем уже некогда разбираться, работать еще надо.
хехе
From:[info]luarvique@lj
Date:February 27th, 2017 - 04:44 pm
(Link)
На ассёмблере нада!
From:[info]probegi@lj
Date:February 27th, 2017 - 04:49 pm
(Link)
Лексической редупликации камент.
хехе
From:[info]yalexey@lj
Date:February 27th, 2017 - 04:46 pm

Вот это нагуглилось

(Link)
https://access-programmers.co.uk/forums/showthread.php?t=215253

Верифицировать адекватность я не в состоянии. С VBA дела никогда не имел, слава яйцам.
From:[info]probegi@lj
Date:February 27th, 2017 - 04:48 pm

Re: Вот это нагуглилось

(Link)
Ага, спс! Позырю про SetAccess.
From:[info]morimo@lj
Date:February 27th, 2017 - 05:24 pm
(Link)
Excel же тогда под правами админа придётся запускать. И, если через API делать, то гимор будет с адаптацией Win32API к требованиям x64 (Excel, полагаю, у Вас x64).

Посему пока ход мысли у меня такой: скрипт Excel должен генерировать строки VBS-скрипта на основе имеющейся таблицы дерева папок. А затем уже копировать получившийся VBS-скрипт и запускать его as administrator.
From:[info]probegi@lj
Date:February 27th, 2017 - 05:35 pm
(Link)
Права админа мы найдем.
API же работает само, на то оно и API. Где функцию вызвал, там она и работает.
Решение выше подсказали, не знаю, насколько эффективенее, чем если через VBS.
Мне все равно на один-два раза.

хехе
From:[info]morimo@lj
Date:February 27th, 2017 - 06:07 pm
(Link)
В общем, похоже проще всего даже не VBS генерировать, а обычный .bat-файл с командой icacls в соответствующем формате. Так думаю.
From:[info]morimo@lj
Date:February 27th, 2017 - 06:33 pm
(Link)
Похоже, в итоге алгоритм использовал бы такой:

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

icacls [имя_папки] /deny [имя_пользователя]:F

Всё будет запрещено всем.

Следующий проход - предоставить права чтения сочетаниям пользователь-папка командой

icacls [имя_папки] /grant [имя_пользователя]:R

Ну а последний проход - то же самое проделать с правами полного доступа командой

icacls [имя_папки] /grant [имя_пользователя]:F

Всё это в батнике без использования VBS. Только если там русскоязычные имена, то сохранять придётся в OEM-866.
From:[info]u40856122@lj
Date:February 28th, 2017 - 02:42 am
(Link)
> то сохранять придётся в OEM-866

man chcp
From:[info]morimo@lj
Date:February 28th, 2017 - 04:04 am
(Link)
%бать я лох... век живи - век учись. Премного благодарен.
From:[info]u40856122@lj
Date:February 28th, 2017 - 06:19 am
(Link)
Фигня вопрос, обращайтесь.
From:[info]yalexey@lj
Date:February 27th, 2017 - 07:04 pm
(Link)
Офис x64 - глючное говно. Я тут как-то поставил случайно, и стал ловить кучу ошибок, включая ошибки windowsupdate. Долго мучился. Дошёл до MSDN, а там написано, что это его обычное поведение, и в продакшене рекомендуется версия x32 для всех случаев, когда размерности индексов хватает под задачи.
From:[info]u40856122@lj
Date:February 28th, 2017 - 02:58 am
(Link)
Вот удивляет сие, как так можно, с ещё давней статейки на каком-то из официальных MS-блогосайтов "Смотрите, нам пришлось поменять всего 73% кода notepad, чтобы перекомпилить исходники старого 32-битного для работы в 64-битной WinXP (или NT 4, не помню уже)". Швабодники иногда выкидываю кунштюки, но, например, у того же RHEL (ладно, CentOS) я как-то и не заметил момента, когда в дистрибутиве рядом с i386 каталогом появился x86_64.
From:[info]yalexey@lj
Date:February 28th, 2017 - 05:23 am
(Link)
Есть подозрение, что legacy code notepad может содержать куски 30 летней давности.
From:[info]u40856122@lj
Date:February 28th, 2017 - 06:28 am
(Link)
Ядру линукса стукнет (сверился) 26 лет в этом году, так что есть подозрение, что они там насиловали труппродолжали перепиливать исходники notepad'а от ещё первой винды.
From:[info]yalexey@lj
Date:February 28th, 2017 - 06:32 am
(Link)
И я про то же.
From:[info]pessimister@lj
Date:March 1st, 2017 - 07:28 pm
(Link)
Дык, это ж памятник!
From:[info]luarvique@lj
Date:March 1st, 2017 - 10:31 pm
(Link)
16-битные. Это все обьясняет.
From:[info]anonim_legion@lj
Date:February 28th, 2017 - 09:36 am
(Link)
>Excel же тогда под правами админа придётся запускать.

Необязательно. Главное, чтобы были полные права на корневой каталог, внутри которого все эти деревья будут.
[User Picture]
From:[info]toshick@lj
Date:February 27th, 2017 - 05:35 pm
(Link)
VBA вообще не нужен.
1) cacls-команды собираются конкатенациями в одном столбце, этот столбец копируется в клипборд
2) .cmd файл открывается на запись
3) в него копируется текст из клипборда (возможно, стоит в первой строке сбросить все права командой вида "cacls X:\ /R Everyone /E" )
4) .cmd файл сохраняется и запускается на исполнение в нужном контексте
5) профит!

Аналогичным способом можно готовить SQL-батчи для баз данных.
From:[info]probegi@lj
Date:February 27th, 2017 - 05:37 pm
(Link)
Не, ну просто саму же структуру я вебеой создаю, пусть уж оно и бач-файл состряпает заодно.

хехе
[User Picture]
From:[info]toshick@lj
Date:February 27th, 2017 - 05:49 pm
(Link)
я просто параноик и хочу всегда ВИДЕТЬ то, что я запускаю с системными правами
а то потом придется собирать данные из лапши ... плавали, знаем
From:[info]probegi@lj
Date:February 27th, 2017 - 05:50 pm
(Link)
Поэтому перенос данных из старой структуры в новую будет ручным. Упорядочение хаоса нельзя доверять компьютерам.

хехе
From:[info]u40856122@lj
Date:February 28th, 2017 - 03:01 am
(Link)
На одной из моих предыдущих работ тётки такой режим работы символично называли «врукопашную».
From:[info]u40856122@lj
Date:February 28th, 2017 - 10:02 am
(Link)
Между прочим, если структура и права статичные, то сошёл бы архив структуры с правами (пишут, что WinRAR умеет ACL'ы). Создаём каталог, кликаем на архиве, "Распаковать в...".