Hur gör man för att ta reda på vart på hårddisken en fil finns, läsa filen och redigera direkt på hårddisken så att det inte längre finns några spår av att man har haft den filen. T.ex. så kan man ersätta den med bara en massa ASCII 0-tecken (00000000 i binärt, vbNullChar i VB).
Att ägna sig åt absolut/sektorsvis skrivning till disk från VB låter väldigt farligt och väldigt omöjligt. Det går inte att göra öht i user-mode på NT-baserade system.
Och frågan är varför du egentligen behöver det. Vill du bara utplåna alla spår av en fils innehåll så borde det räcka att öppna, slumpvis skriva över (hela filens längd), och stänga filen ett 20-tal ggr. För att utplåna filens namn borde det räcka med att döpa om den ett antal ggr.
Om du vill gå mer på djupet så finns här lite att läsa om saken + källkod i ditt favoritspråk (C). Koden är bra kommenterad, så man förstår ungefär vad det är dom gör.
Men jag tänkte även på hur man kan få reda på vilka kluster, m.m. som är oallokerade, dvs som inte används av någon fil för då kan man göra samma sak även där.
Du menar funktionen CleanFreeSpace? Jo, den verkar intressant. Fast koden kör ju en del anrop direkt mot filsystemdrivern (via NtFsControlFile) så om du planerar att göra egna ändringar i koden så bör du nog se till att ha Windows-CD:en nära till hands. (Om du inte har en sekundär disk att leka med.)
Men vart finns det info och syntaxer om den funktionen då?
Vet inte riktigt, faktiskt. Som det står är det en odokumenterad funktion för att skicka kontrollkoder direkt in i NTFS-filsystemsdrivern. Fem av kontrollkoderna finns deklarerade i "defrag.h", vill du veta vilka övriga som finns och vad du kan göra med dem så får du nog fixa MS File System Driver Dev. Kit, misstänker jag.
Fast nu känns som jag lett dig lite på villovägar. Att skriva direkt till lediga diskkluster är inget du vill eller kan göra i en vanlig app. Funktionen CleanFreeSpace använder dessutom ett mycket mer normalt och snällare sätt: Den allokerar en vanlig fil i det lediga utrymmet, fyller filen med skräp tills det inte går mer och tar sen bort filen.
Om du vill skriva en app som deletar data från oallokerade diskdelar så är det enklast (minst svårt) om du flyttar över alla funktionerna (CleanFreeSpace osv..) till en C-Dll och sen anropar dem från VB.
(Att porta hela koden till VB går nog inte eftersom den använder funktionspekare.)
267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e