Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как удалить файл? Добавлено: 14.01.03 15:02  

Автор вопроса:  JF

У меня есть сделанный на VB анинсталлер, который удаляет все необходимые записи из реестра. нужные файлы и т.д.

Но как сделать так, что бы этот анинсталлер удалял сам себя и папку, где он находиться, не используя при этом ДОС и BAT-файлы, а именно средствами VB или возможностями Windows?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 BIV



Вопросов: 4
Ответов: 27
 Профиль | | #1 Добавлено: 14.01.03 15:13

Удаление директории (не удаляет файлы и поддиректории)
Public Declare Function NSA_API_RemoveDirectory Lib "kernel32.dll" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
'Возвращает 1 в случае успешного удаления, иначе 0.
'lpPathName - имя директории

Удаление файла
Public Declare Function NSA_API_DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
'Возвращает 1 в случае успешного удаления, иначе 0.
'lpFileName - имя файла

Ответить

Номер ответа: 2
Автор ответа:
 msv



Вопросов: 34
Ответов: 312
 Web-сайт: msvprogs.narod.ru
 Профиль | | #2
Добавлено: 15.01.03 07:20
Можно проще: RmDir(путь)

Ответить

Номер ответа: 3
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #3 Добавлено: 15.01.03 09:52

RmDir удаляет пустую папку. Перед этим нужно сделать всем "Kill *" :))

Ответить

Номер ответа: 4
Автор ответа:
 Андрей Щёкин [darxeth]



ICQ: 161560107 

Вопросов: 9
Ответов: 52
 Web-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #4
Добавлено: 16.01.03 00:57

Зря ты кстати против BAT файов. В конце концов DOS shell можно запустить невидимо с приоритетом IDLE. Кстати в MSDN есть статья на эту тему, там они останавливаются на этом методе.

Но файлы можно удалить и более извращённо (правда WinNT/2K/XP only).

Public Const MOVEFILE_DELAY_UNTIL_REBOOT = &H4

Public Declare Function MoveFileEx ( ByVal lpExistngFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long

и делаешь MoveFileEx твойфайл, vbNullString, MOVEFILE_DELAY_UNTIL_REBOOT

После перезагрузки твой файл удалится.

Есть ещё более хитрый способ, когда удаляющий код записывается в отдельную область памяти, но он не реализуется на VB.

Наконец, можно прописать что-нибудь удаляющее в реестр в RunOnce на автозагрузку. Правда ничего кроме del dir\*.* в голову не приходит, но, тем не менее...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам