Что нового

Запретить или перехватить удаление windows

Сообщения
30
Репутация
-1
Нужно запретить удаление файлов и папок, хотя бы из контекстного меню.
Еще не плохо бы запретить копирование и перемещение файлов и папок, но чтобы копирование текста осталось.

Пока что есть вот такой скрипт, он справляется только с нажатием клавиши del, shift+del

Код:
#NoTrayIcon
HotKeySet("+`", "Close")
HotKeySet("+{F1}", "Lock")
HotKeySet("+{F2}", "UnLock")

 HotKeySet("{del}", "ShowMessage")
HotKeySet("+{del}", "ShowMessage")

Opt("TrayMenuMode",1+2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.

; тело основной программы
While 1
    Sleep(100)
WEnd


 Func  ShowMessage() ; по нажатию комбинации клавиш delete
    MsgBox(4096, "", "Runtime error!")
EndFunc

Func Lock()
 HotKeySet("{del}", "ShowMessage")
HotKeySet("+{del}", "ShowMessage")
EndFunc

Func UnLock()
 HotKeySet("{del}")
HotKeySet("+{del}")
EndFunc

Func Close()
Exit
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
bradu

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Администратор.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Можно использовать Cacls...

Код:
Run(@ComSpec & ' /C cacls "C:\Folder" /E /D "' & @UserName & '"')


ну или метод с утилиты BlockIt.
 
Автор
B
Сообщения
30
Репутация
-1
А вот как раз мне нужно, чтобы чтение и исполнение файлов осталось, поэтому blockit несколько не то. и cacls тоже не то.

Возможно тут поможет вот эта функция, но я в ней не разобрался
Код:
GUIRegisterMsg()

из этой темы
http://autoit-script.ru/index.php?topic=4304.0
 

_dron_

Знающий
Сообщения
84
Репутация
8
Код:
While 1
	WinClose('[CLASS:#32770]')
WEnd


берешь выбираешь файл жмешь "del" запускаешь "AutoIt Window Info" смотришь класс окна и заменяешь #32770 на тот что у тебя ;D удачи
 
Автор
B
Сообщения
30
Репутация
-1
_dron_, спасибо, интересная идея :smile: Но я все таки успеваю удалять таким образом файлы

хотя, изменил немного скрипт и вроде бы нормально

Код:
While 1
	  WinClose("[TITLE:Подтверждение удаления файла;CLASS:#32770]", "")
WEnd


Если у кого найдутся еще варианты, буду рад

Потому что этот скрипт прилично грузит процессор
 
Автор
B
Сообщения
30
Репутация
-1
Спасибо! Работает
 
Верх