Avatar billede danielhep Nybegynder
30. august 2003 - 15:13 Der er 20 kommentarer og
1 løsning

direkte til hdd

Hey

Jeg har hørt at man kan med Ansi C skrive "rådt til harddisken".

Det vil sige at, f.eks Windows ikke detecter at den fil man har skrevet er der..

Jeg kunne godt bruge lidt hjælp til at komme i gang med det, hvis man kan det..

Mvh

Daniel
Avatar billede soreno Praktikant
30. august 2003 - 15:17 #1
Det kan absolut ikke anbefales.

Hvad nu hvis der ligger noget data der hvor du har tænkt dig at skrive til harddisken.. - så er det bye bye data ?

Måske den bedste løsning var at lave en partition der er tom som du kan bruge.


Du kan læse vilkårlige partitioner (uden om evt. filsystem) med CreateFile, SetFilePointer,ReadFile - som er en del af win32 api.

Så kan du formentlig skrive med WriteFile (jeg har ikke prøvet).


Hvad skal det bruges til ?
Avatar billede mcgoat Nybegynder
30. august 2003 - 15:21 #2
Kigger lige med :o)
Avatar billede squashguy Nybegynder
30. august 2003 - 15:22 #3
Du kan bruge samme teknik, som en del virusprogrammører bruger: skrive til en ledig sector og markere den som "bad sector", således windows ikke vil forsøge at overskrive den. Men har du ikke fuldstændig styr på hvad ud laver, så kan det hele gå hurtigt galt.

Hvis du bruger ntfs, kan du evt benytte dig af "alternate data streams"- her skal du bruge specielle værktøjer for at se de filer du opretter.
Avatar billede danielhep Nybegynder
30. august 2003 - 15:23 #4
Det skal bruges til et system på en skole, så alle de ikke seriøse elever får sig et lille chock, hvis de laver rav i den.

Den data som skal gemmes på et tilfældigt sted på hdd, gør ikke noget hvis den bliver overskrevet.  Den skal kun være der midlertidigt.
Avatar billede danielhep Nybegynder
30. august 2003 - 15:23 #5
squashguy >>

Har du evt. et link til noget code, eller lig ?
Avatar billede soreno Praktikant
30. august 2003 - 15:24 #6
Jamen, problemet er jo den anden vej.

Hvordan kan du vide om Windows har allokeret netop den sector du vil skrive til ?
Avatar billede danielhep Nybegynder
30. august 2003 - 15:24 #7
Mcgoat >> Kommer du på Messenger ?
Avatar billede mcgoat Nybegynder
30. august 2003 - 15:25 #8
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <process.h>
#include <share.h>
#include <stdio.h>

int main(void)
{
  int handle, status;
  long length;

  /* Must have DOS Share.exe loaded for */
  /* file locking to function properly */

  handle = _sopen("c:\\autoexec.bat",
    O_RDONLY,SH_DENYNO,S_IREAD);

  if (handle < 0)
  {
    printf("_sopen failed\n");
    exit(1);
  }

  length = filelength(handle);
  status = lock(handle,0L,length/2);

  if (status == 0)
    printf("lock succeeded\n");
  else
    printf("lock failed\n");

  status = unlock(handle,0L,length/2);

  if (status == 0)
    printf("unlock succeeded\n");
  else
    printf("unlock failed\n");

  close(handle);
  return 0;
}

Prøv det... maybe
Avatar billede danielhep Nybegynder
30. august 2003 - 15:25 #9
man finder en ledig sector og bruger den.
Avatar billede squashguy Nybegynder
30. august 2003 - 15:27 #10
danielhep, kører alle maskiner med ntfs?
Avatar billede danielhep Nybegynder
30. august 2003 - 15:28 #11
Nej, det er både FAT 32 og NTFS..Største parten køre med WIN XP, men dog også 2000 her og der..
Avatar billede soreno Praktikant
30. august 2003 - 15:28 #12
Hvor meget data drejer det sig om (i bytes) ?
Avatar billede danielhep Nybegynder
30. august 2003 - 15:30 #13
soreno >> Så meget som muligt, men til at starte med er 2 Gb nok.
Avatar billede squashguy Nybegynder
30. august 2003 - 15:33 #15
2 gb er nok lidt for stor en mundful til at gå i krig med hidden/bad sectors. det vil næsten kræve at du skriver dit egen filsystem.
Avatar billede danielhep Nybegynder
30. august 2003 - 15:34 #16
squashguy >>

Hvad ville du mene at der er en mundfuld ?
Avatar billede soreno Praktikant
30. august 2003 - 16:24 #17
Når Windows laver et filsystem (ved formatering) så bliver al pladsen på partitionen allokeret til filsystemet. Dvs. det er filsystemet der bestemmer hvordan data skal ligge. Hvis du begynder at rode for meget rundt med det kan du risikere at overskrive data som er uundværligt for filsystemet. Det vil resultere i totalt data tab - set fra filsystemets vinkel (det vil principielt være muligt at genskabe noget data, men det er ikke nemt).

En sector hist og pist kan man lege med. Men når det drejer sig om min. 2 GB bør du vælge en anden løsning.

F.eks. egen raw partition hvor du selv styrer access til partitionen (altså lave eget filsystem).
Avatar billede squashguy Nybegynder
31. august 2003 - 00:39 #18
Du kunne også gå en anden vej, og hooke nogle Windows API funktioner; således du kan styre hvilke filer der skal vises ved dir, hvilke filer der kan åbnes/afvikles mm...
Avatar billede danielhep Nybegynder
31. august 2003 - 20:30 #19
Ja, jeg ved det ikke..har ikke prøvet nogle af de forslag i kommer, men hvis i kan smide et link ind, hvor på der er noget information som kan bruges, så ville det være fint.
Avatar billede danielhep Nybegynder
05. september 2003 - 22:18 #20
er der andre kandidater til dette spm ?
Avatar billede danielhep Nybegynder
14. september 2003 - 03:05 #21
Lukker spm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester