Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/39: Рейтинг темы: голосов - 39, средняя оценка - 4.54
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 41
1

Можно ли запретить создание файлов конкретному процессу

03.02.2010, 11:45. Показов 7083. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Ситуация следующая:
Win2000 (SP4).
При запуске определённой программы (запускается с правами пользователя) исполняемый процесс создаёт на рабочем столе несколько ярлыков. Сей факт очень сильно раздражает.
Можно ли запретить создание файлов конкретному процессу? И существует ли возможность привязки запуска скрипта к такому событию, как создание конкретного файла в определённой папке?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2010, 11:45
Ответы с готовыми решениями:

Можно ли с помощью инструкции в .htaccess запретить создание файлов на сайте?
Ребят подскажите пж можно ли с помощью инструкции в файле .htaccess запретить создание на сайте...

С помощью какой команды можно запретить конкретному пользователю все виды доступа к общей папке?
Как запретить конкретному Пользователю все разрешения доступа к папке? net share file="c:\file"...

Создание файлов по конкретному адресу
Как сделать так, что-бы програма написаная на PascalABC.NET создавала файлы по конкретному пути а...

Какие API лучше использовать для привязки к конкретному процессу?
Хотел бы спросить, какие API лучше использовать для привязки к конкретному процессу? К примеру,...

16
32 / 32 / 0
Регистрация: 13.02.2009
Сообщений: 67
04.02.2010, 19:41 2
kolhara: Можно ли запретить создание файлов конкретному процессу?
Как вариант - если у "конкретного процесса" нет обработки на ошибку при создании файла, то программа будет вылетать с какой-либо ошибкой, а если обработка на ошибку есть - вполне вероятно, что будет выводиться сообщение, типа ["Не удалось создать ярлык на рабочем столе. Продолжить?" Да/Нет], что ИМХО будет раздражать вас точно также

kolhara: существует ли возможность привязки запуска скрипта к такому событию, как создание конкретного файла в определённой папке?
Про событие не знаю, но как вариант - написанный скрипт(или программа) будет например, каждые 3 минуты проверять у вас на рабочем столе наличие определенного файла, и если он там - то {удалить_файл}, если нет - то {ничего_не_делать}
1
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 41
05.02.2010, 10:18  [ТС] 3
Можно пример кода, плз?
0
32 / 32 / 0
Регистрация: 13.02.2009
Сообщений: 67
07.02.2010, 17:56 4
kolhara,
Цитата Сообщение от kolhara Посмотреть сообщение
Можно пример кода, плз?
Вот держите готовое решение на
VBS
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = Wscript.CreateObject("WScript.Shell")
'Находим - где у нас расположен рабочий стол
strDesctop = objShell.SpecialFolders("Desktop") 
strFileName = strDesctop & "\" & "CCleaner.lnk" 'Бедный CCleaner - за что же мы с ним так))))
If objFSO.FileExists(strFileName) Then
    Set objFile = objFSO.GetFile(strFileName)
    Const DELETE_FILE_FORCE = True
    objFile.Delete DELETE_FILE_FORCE
    Set objFSO = Nothing
End If
Set objFSO = Nothing
Set objShell = Nothing
и исходники на
Visual Basic 6.0.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Command1_Click()
    frmMain.Visible = False
    App.TaskVisible = False
End Sub
 
Private Sub Form_Load()
    ' раскоментируйте следующие строки,
    ' если хотите, чтобы программа не появлялась при запуске
    'frmMain.Visible = False
    'App.TaskVisible = False
End Sub
 
Private Sub Timer1_Timer()
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("WScript.Shell")
    'Находим - где у нас расположен рабочий стол
    strDesctop = objShell.SpecialFolders("Desktop")
    strFileName = strDesctop & "\" & "CCleaner.lnk" 'Бедный CCleaner - за что же мы с ним так))))
    If objFSO.FileExists(strFileName) Then
        Set objFile = objFSO.GetFile(strFileName)
        Const DELETE_FILE_FORCE = True
        objFile.Delete DELETE_FILE_FORCE
        Set objFSO = Nothing
    End If
    Set objFSO = Nothing
    Set objShell = Nothing
End Sub

Скриптом не знаю как реализовать периодичность, разве что закинуть в планировщик заданий. На visual basic это делает таймер. Программа висит у вас в процессах и каждую секунду проверяет, есть ли такой файл у вас на рабочем столе - если есть - удаляет, если нету - висит дальше. Чтобы выйти нужно вызвать диспетчер задач и удалить процесс DelFile.exe.

Если хотите, чтобы программа запускалась автоматически - просто создайте ярлык к программе DelFile.exe в папку Автозагрузка в меню Пуск--Программы.

Если хотите, чтобы при запуске программы ее не было видно - раскоментируйте две строчки в событии Form_Load() в коде и перекомпилируйте exe-файл
Вложения
Тип файла: zip delfile.zip (5.2 Кб, 80 просмотров)
2
AlexKalinin
07.02.2010, 22:12
  #5

Не по теме:

CyberБурундукЪ,
Последний раз редактировалось CyberБурундукЪ; Вчера в 21:07.
Спасибо Вам, за то, что дооформили мое сообщение. Видимо у меня проблемы с браузером, ОС, или :D... кривыми руками, но почему-то совместное сочетание тегов <cut> и <vb> работает некорректно (таблица кода - номера строк и сам код почему-то склеивались). Собственно поэтому и не оформил до конца.

PS
Использую Mozilla Firefox 3.0, java, java-scrip включены. Windows XP SP3.

0
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 41
07.02.2010, 23:09  [ТС] 6
Огромное спасибо за совет, за помощь!
0
3896 / 899 / 122
Регистрация: 16.04.2009
Сообщений: 1,825
08.02.2010, 11:45 7
Если отталкиваться не от "сделать как надо" а от "сделать как-нибудь, лишь бы не было ярлыков" то можно создать скрытые папки с таким же именем как ярлык "calc.lnk" (с расширением!)
Папки видны не будут, а файлы нельзя создавать с таким же именем как папка и перезаписать папку файлом тоже нельзя (имеется ввиду команда создать файл с перезаписью).
3
32 / 32 / 0
Регистрация: 13.02.2009
Сообщений: 67
08.02.2010, 19:13 8
Цитата Сообщение от Toxa33rus Посмотреть сообщение
Если отталкиваться не от "сделать как надо" а от "сделать как-нибудь, лишь бы не было ярлыков" то можно создать скрытые папки с таким же именем как ярлык "calc.lnk" (с расширением!)
Папки видны не будут, а файлы нельзя создавать с таким же именем как папка и перезаписать папку файлом тоже нельзя (имеется ввиду команда создать файл с перезаписью).
+1
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
08.02.2010, 19:37 9
Если известны имена ярлыков, то не проще ли запускать после их навязчивого появления скрипт?
Visual Basic
1
2
3
4
Dim fso
Const lnkName = "C:\Documents and Settings\Администратор\Рабочий стол\Counter-Strike 1.6.lnk"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(lnkName) Then fso.DeleteFile lnkName
Можно конечно организовать и периодичность добавив Wscript.sleep(5000) и заключить всё это в бесконечный цикл, но у меня такая конструкция давала сбои по времени (не вовремя выполнялась инструкция) на XP SP2, хоть и редко, на SP3 не тестила.
2
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 41
10.02.2010, 11:51  [ТС] 10
Цитата Сообщение от Toxa33rus Посмотреть сообщение
Если отталкиваться не от "сделать как надо" а от "сделать как-нибудь, лишь бы не было ярлыков" то можно создать скрытые папки с таким же именем как ярлык "calc.lnk" (с расширением!)
Папки видны не будут, а файлы нельзя создавать с таким же именем как папка и перезаписать папку файлом тоже нельзя (имеется ввиду команда создать файл с перезаписью).
Такой вариант рассматривался. Но оч не хочется иметь на рабочем столе лишний хлам, в том числе и папки (отображение скрытых папок у меня включено). И на раб. столе включено автоматическое упорядочивание значков (удобно), т. е. за пределы раб. стола ничего не спрячешь.

В любом случае спасибо!

Добавлено через 2 минуты
Цитата Сообщение от Abu Посмотреть сообщение
Если известны имена ярлыков, то не проще ли запускать после их навязчивого появления скрипт?
Код
Dim fso
Const lnkName = "C:\Documents and Settings\Администратор\Рабочий стол\Counter-Strike 1.6.lnk"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(lnkName) Then fso.DeleteFile lnkName
Можно конечно организовать и периодичность добавив Wscript.sleep(5000) и заключить всё это в бесконечный цикл, но у меня такая конструкция давала сбои по времени (не вовремя выполнялась инструкция) на XP SP2, хоть и редко, на SP3 не тестила.
Наверное так и сделаю.
0
3896 / 899 / 122
Регистрация: 16.04.2009
Сообщений: 1,825
13.02.2010, 11:28 11
а если рабочий стол сделать только для чтения?
0
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
15.02.2010, 21:52 12
а если создать скрипт и запускать программу через него. этот же скрипт, с выдержкой времени, скажем, 30 сек будет удалять ярлыки. не придется постоянно крутить код.
если трудности с кодом на VBS (у него функционал ограничен), посмотрите в сторону Autoit
2
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 41
16.02.2010, 14:50  [ТС] 13
Цитата Сообщение от Toxa33rus Посмотреть сообщение
а если рабочий стол сделать только для чтения?
А я как буду пользоваться рабочим столом? :

Добавлено через 1 минуту
Цитата Сообщение от ironegg Посмотреть сообщение
а если создать скрипт и запускать программу через него. этот же скрипт, с выдержкой времени, скажем, 30 сек будет удалять ярлыки. не придется постоянно крутить код.
если трудности с кодом на VBS (у него функционал ограничен), посмотрите в сторону Autoit
Ага. Классно! Уже работаю.

Добавлено через 1 минуту
Только не знаю, как лучше реализовать: BAT или VBS. Может кто подскажет?

Добавлено через 3 часа 2 минуты
Всё работает! Получилось!
Из небольшого скрипта происходит запуск самого приложения и через паузу в заданное количество миллисекунд происходит удаление ненужных файлов.
Всем огромное спасибо за помощь и участие!
0
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
17.02.2010, 13:09 14
а если попробовать просмотреть ветку реестра этого приложения (или ini файлы) и там отменить создание ярлыков , или хотя бы изменить их локацию?
1
3 / 3 / 0
Регистрация: 28.12.2009
Сообщений: 41
18.02.2010, 09:28  [ТС] 15
Цитата Сообщение от ironegg Посмотреть сообщение
а если попробовать просмотреть ветку реестра этого приложения (или ini файлы) и там отменить создание ярлыков , или хотя бы изменить их локацию?
Да не нашел.
0
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 18
22.02.2011, 08:45 16
Очень интересно

у меня комп. класс
т.е. можно использовать этот код
чтобы сделать скрипт, который бы перемещал всякие лишние
файлы с раб. стола в папку C:\User

(чтобы юзеры не захламляли чем попало рабочий стол, e.g. файлы .doc, .xls и пр.)

?

Добавлено через 4 минуты
Очень интересно

у меня комп. класс
т.е. можно использовать этот код
чтобы сделать скрипт, который бы перемещал всякие лишние
файлы с раб. стола в папку C:\User

(чтобы юзеры не захламляли чем попало рабочий стол, e.g. файлы .doc, .xls и пр.)

Добавлено через 52 минуты
Еще интересвует:

шаловливые юзеры очень любят менять всевозможные атрибуты, мишуру
и оформления - например, в Сервис->Свойства папки->Общие и ->Вид
- насколько я понимаю в самой OC (Windows XP Prof. SP2)
предусмотрены значения "по умолчанию"

как написать такой скрипт, чтобы он, не мудрствуя лукаво, сам возвращал эти самые "умолчания"
при каждом новом входе User'a в систему (или презагрузке)?

насколько я понимаю, должна существовать определенная ветка реестра, отвечающая за default'ы для этой записи User'a ?
0
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
15.03.2012, 00:52 17
Цитата Сообщение от homo_novu5 Посмотреть сообщение
как написать такой скрипт, чтобы он, не мудрствуя лукаво, сам возвращал эти самые "умолчания"
при каждом новом входе User'a в систему
нетривиальная задача.
советую посмотреть в сторону EWF-драйвера (драйвер для работы операционки с read only носителей, применяется в музыкальных автоматах и тд). при активированном ewf драйвере (скажем, для диска C все изменения для диска демпфируются в оперативной памяти. при перезагрузке можно либо сохранить их на диск, либо перезагрузить без сохранения. в этом случае получаем операционку в точно том состоянии, в каком она была до предыдущего запуска (т.е. то что требовалось - никаких вирусов и шаловливых ручек)

Не по теме:

еще и быстрее работает. просто... праздник какой-то

.
0
15.03.2012, 00:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2012, 00:52
Помогаю со студенческими работами здесь

Запретить Wi-Fi конкретному MAC
Роутер TP-Link TD-W8950N все на английском, в котором увы не силен. Как, где прописать...

Запретить доступ к процессу
Здравствуйте, передомной сейчас стоит задача написания не замысловатого античита для игры. С...

Запретить доступ к процессу любой программе
Здраствуйте ув. форумчане, есть вопрос можно ли как то запретить доступ к процессу клиента игры...

Как запретить процессу доступ к интернету
Подскажите, как сделать так что-бы заданной клавиши процессу запрещался доступ в интернет, а по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru