|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
14.01.2008, 10:55 | #1 | |
DwgRuLispLib: Удаление каталога
Moderator
LISP, C# (ACAD 200[9,12,13,14])
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,844
|
||
Просмотров: 21770
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Если честно, res был введен в тестировочных целях. Он вернет <%catch-all-apply-error%> только в одном случае - если каталог удалить не удалось (каталог, например, открыт в окне проводника или FAR'a). Он нужен только если вводить дополнительный анализ - получилось удаление или нет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 14.01.2008 в 12:08. |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Сейчас получилось, что дал команду, а о выполнении и слышать не хочу. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Ок, переделаю. Или ты сделаешь?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Не только princ -> res. Описалово тоже надо было подправить. Я б точно забыл
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Нельзя в библиотеку включать никакие функции, использующие FSO!
Нормальные админы запрещают использование этих объектов. Причина - в веб-страницу можно встоить объект FSO (и др. из WSH) и заставить пользователя выполнить то же самое удаление папки, или запустить программу. Подобные функции надо делать свои, разумеется, с учетом требований безопасности. Здесь же получится, что функция в библиотеке есть, а выполнить её нельзя. И что толку, если она будет защищена ловушкой? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
По-моему, запрещают использовать скриптовые вещи (типа VBScript, JavaScript). Кстати, как запретить использование FileSystemObject так, чтобы и каталог можно было создавать тем же FAR'ом или Проводником, и программно это было нереализуемо (то есть нельзя было бы создать объект FSO), не подскажете? Я-то в этом ни в зуб ногой, а любопытно (дома на виртуалках проверну - специально домен из них сделаю если понадобится).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Э, э, э! Вы че, мужики?! Где запрос на подтверждение? Это вам не хухры-мухры папку со всеми вложениями сносить! Хотябы ключик вставьте подтверждать или нет. Я че-то слабо себе представляю такую ситуацию, когда без подтверждения надо сносить. Только с целью крайне эффективного вредительства, разве что.
Сколько раз, мне в частности, винда не давала удалять файл, говорила что он занят, хотя на самом деле давно эту занятость сняли! Да и вам тоже наверняка. Смотрю на функцию и вижу, удаляет, удаляет, удаляет, а потом тык - удалить нельзя - занято. Что вернет все на старое место? Да как бы кад не слетел, и то хорошо будет. |
||||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Цитата:
|
|||
|
||||
Предлагаю закончить ф-цию следующим образом
Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Что случилось - не пойму, но заработало.
Если в дереве удаляемых папок блокнотом открыт текстовый файл, то сносится все и блокнот исчезает, а если экселевский файл открыть, то сносится все вокруг него и остается цепочка папок к этому файлу и он сам. |
||||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Неважно, видим ли я или ты серьезные причины - важно, видят ли их администраторы. Им проще всего запретить. Есть разные методы борьбы с WSH - от физического удаления WScript.exe и CScript.exe до запрета их запуска через разрешения NTFS. Автор книги "Средства автоматизации в Microsoft Windows. Справочник администратора" возмущен этим, так как "это означает, что большинство скриптов этой книги не будут выполняться". Добрый дядя. Целую главу написал по безопасной работе "безопасных" скриптов. Правильным решением считается разрешение на выполнение "доверяемых скриптов". А чтобы скрипт стал "доверяемым" необходимо Цифровое подписание скрипта Далее цитирую: "Подписание скрипта не представляет сложностей. Сначала вы должны получить сертификат на подписание кода. Обычно его можно получить от коммерческого ЦС примерно за $300 в год (цены варьируются среди различных ЦС) или от внутреннего ЦС, если он есть в вашей организации. Помните, что ЦС, выдавший вам сертификат, должен быть доверяемым ЦС на всех компьютерах, где предположительно будет выполняться ваш скрипт. Получив сертификат, вы должны установить его. В процессе установки он копируется в специальное защищенное хранилище сертификатов на вашем компьютере." Вот ежели мы хотим использовать в своих функциях (скриптах) WSH, то мы и должны это делать, иначе любой админ будет прав, закрыв WSH. Оно нам надо? Тем более, что всё, что делают объекты FSO, можно лучше, надежней и безопасней сделать собственными компонентами библиотеки. Надо делать COM-сервер, в который собирать все "файловые" действия, причем реализовывать их не самоделками, а функциями WinAPI. При этом никакой "интерактивности" (запросов на удаление) в функциях и не должно быть - это решается на уровне программ, а не функций. Вот невозможность удаления файлов - типичный пример. Это происходит из-за того, что одни программы держат файл постоянно открытым, а другие считывают его, закрывают и не держат захваченным. А некоторые еще и папку захватывают, даже после закрытия файла. |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
> ShaggyDoc
Честно говоря, подписанных скриптов пока не видел. Конечно, хочется всё обезопасить, но отключение WSH усложняет некоторые процедуры, которые так удобно делать скриптами. Что бы действительно обезопасится, надо поотключать все API, какие есть в системе. Насчёт того, включать ли такие функции... мне кажется можно включать, а вот когда сделаем свою dll, тогда и переделывать на её использование. > VVA Согласен - в описании ошибки всё равно ничего содержательного не будет - t/nil - лучше. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
WSH очень удобен, особенно для администрирования. Да и для LISP тоже. Но "хотели как лучше...". Удобное средство оказалось очень опасным. И не только извне, с веб-страниц. Даже на LISP можно написать червя или трояна (полстраницы) и встроить в тело безобидной функции. Спам рассылать, или пароли спереть.
Что касается возврата результата в опубликованной функции, то там надо dwgru-error-catch применить, она и вернет требуемый T/NIL, и сообщит в командную строку о причине ошибки. Совсем молча тоже плохо - причины будут неизвестны. Сообщение может быть факультативным в зависимости от состояния какой-нибудь глобальной, наподобие *dwgru_debug* |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DwgRuLispLib: Функции чтения и установки свойств рисунка (_dwgprops) | VVA | Библиотека функций | 15 | 14.12.2013 10:04 |
DwgRuLispLib: Генератор случайных чисел | VVA | Библиотека функций | 16 | 11.03.2013 21:21 |
Есть ненужные документы. Посмотрите, кому что нужно | Дмитрий832 | Поиск литературы, чертежей, моделей и прочих материалов | 73 | 18.12.2010 22:55 |
Удаление дыма через оконные проёмы | Perezz!! | Прочее. Архитектура и строительство | 5 | 01.11.2006 16:38 |
быстродействие автокада | MR.ZHEKA | AutoCAD | 19 | 01.02.2006 14:48 |