Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.11.2008, 21:37   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как в VBA удалить системный файл

Как макросом, можно удалить системный файл, например: boot.ini
valerij вне форума
Старый 19.11.2008, 23:36   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

наверняка есть способ прямого вызова команд системной оболочки. но я его не знаю, и найти что-то не получилось.
предлагаю такой вариант:
1. создаем файл delfile.bat из двух строк (1-я строка снимет атрибуты, 2-я - удалит файл):
attrib -s -r -h %1
del %1
2. ложим его, например, в папку c:\temp
3. в макросе пишем:
rez = Shell("c:\temp\delfile.bat", "c:\boot.ini")

все.

Эх, рассказал бы кто, как внутреннюю дос-команду из ВБА запустить. А то для Shell это может быть только исполняемый файл, а команд, которые в command.com были вложены он не знает. Видите-ли, пути ему не хватает к файлу...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 20.11.2008, 00:16   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
2. ложим его, например, в папку c:\temp.
Игорь, а как ты его положишь на чужом компьютере?
мне надо, открыл user, xls файл, а boot.ini, тю-тю
valerij вне форума
Старый 20.11.2008, 01:43   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а xls-файл откуда возмется у юзера на компе? он сам его напишет, чтобы открыл - а boot.ini, тю-тю?
Валер, положи описанный бат-файл в расшаренную папку (на сервере, на своем компе) и все будет ок!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 20.11.2008, 04:45   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Эх, рассказал бы кто, как внутреннюю дос-команду из ВБА запустить. А то для Shell это может быть только исполняемый файл, а команд, которые в command.com были вложены он не знает. Видите-ли, пути ему не хватает к файлу...
Код:
Sub testWshShell()
    ' сначала надо подключить библиотеку
    ' Windows Script Host Object Module
    Dim wsh As New WshShell
    ' метод wsh.Run - аналог команды Пуск - Выполнить
    'wsh.Run "ipconfig /all"
    'wsh.Run "ping 127.0.0.1"
    wsh.Run "cmd /c dir /s /b >c:\001.log", 0, False
    wsh.Run "cmd /c ipconfig /all>c:\002.log", 0, False
    wsh.Run "cmd /c mkdir c:\test", 0, False    ' создаёт папку c:\test\
    Set wsh = Nothing
End Sub

Sub testCreateObject()
    ' то же самое без подключения библиотеки
    CreateObject("WScript.Shell").Run "cmd /c dir /s /b >c:\003.log", 0, False
End Sub
EducatedFool вне форума
Старый 20.11.2008, 05:12   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
Как макросом, можно удалить системный файл, например: boot.ini
Нельзя удалять системные файлы на чужих компьютерах, в особенности файл boot.ini... Нехорошо всё это, да и владелец компьютера вряд ли этому обрадуется.

Но если очень хочется, то можно...

Код:
' перед экспериментами создайте копию файла c:\boot.ini с именем c:\testboot.ini

Sub testWScriptShellRun()
    ' по идее, можно удалить так
    CreateObject("WScript.Shell").Run "cmd /c attrib c:\testboot.ini -s -h -r -a", 0, False
    CreateObject("WScript.Shell").Run "cmd /c del c:\testboot.ini", 0, False
    ' или так
    CreateObject("WScript.Shell").Run "cmd /c erase c:\testboot.ini /f /q", 0, False
    ' все эти команды, выполненные из командной строки, приводят к удалению файла
    ' а при запуске из VBA файл почему-то не удаляется...
End Sub

Sub test_scripting_filesystemobject()
    ' эта команда успешно удаляет файл
    CreateObject("scripting.filesystemobject").DeleteFile "c:\testboot.ini", True
End Sub
Ну или даже так:

Код:
Sub testKill()
    SetAttr "c:\testboot.ini", vbNormal
    Kill "c:\testboot.ini"
End Sub

Последний раз редактировалось EducatedFool; 20.11.2008 в 05:28.
EducatedFool вне форума
Старый 20.11.2008, 07:32   #7
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Извиняюсь за праздное любопытство но чем насолил клиент у которого фойл boot.ini решили смахнуть?
У меня в файле рассчёта воздуховодов есть защита от несанкционированого копирования, но она убивает сам файл.
Убивать компьютер "Вора" мне почему-то в голову не пришло.
Хотя есть мыслишка сделать макрос который будет переименовывать файлы из папки "Мои документы" в файлы с названиями1, 2, 3,...
И показывать список переименований (чтобы потом злодей мучился обратно их переименовывал) но пока меня ломает что-то.
КаМММ вне форума
Старый 20.11.2008, 10:00   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от КаМММ Посмотреть сообщение
но чем насолил клиент у которого фойл boot.ini решили смахнуть?
Ни каких "злобных штучек", наоборот, в "защиту" ВБА, чистый спор, клиент знает об этом, делает копию, ну и.....
Еще вопрос, а что антивирусники, не реагируют?
В принципе мы создаем, вирус!
valerij вне форума
Старый 20.11.2008, 12:24   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
В принципе мы создаем, вирус!
Здесь есть много интересной информации про создание вирусов.
EducatedFool вне форума
Старый 20.11.2008, 14:00   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Здесь есть много интересной информации про создание вирусов.
А Здесь есть интересной информации про создание вирусов.
или
ТУТ

Последний раз редактировалось valerij; 20.11.2008 в 14:39.
valerij вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить файл с русским именем? Cricket2007 Помощь студентам 7 12.02.2008 17:51
Как удалить файл dagarik Общие вопросы Delphi 9 05.12.2007 20:25
Помогите, Как программо удалить файл который находится на жестком диске. niva622 Помощь студентам 3 19.04.2007 19:09
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36