Hallo Leute, Bei einem Projekt, will ich Daten direkt auf einen USB Stick ablegen. Dazu habe ich bereits folgende Seite gefunden: https://www.vbforums.com/showthread.php?589818-physical-disk-raw-access Nun stellt ich mir vorab die Frage: Braucht der User zum ausführen des Programmes Admin Rechte (Wegen API Zugriff)?
:
Verschoben durch Moderator
Ja, man braucht Admin-Rechte. Tools wie Rufus oder Win32 Disk Imager brauchen das genau so. Du musst deine Anwendung (.exe) so markieren, dass sie automatisch als Admin gestartet wird. Das geht so: https://stackoverflow.com/a/2818776 Ist halt lästig, das bei jedem Programmstart bestätigen zu müssen, besonders wenn der Admin-User ein separates Passwort braucht... Alternative (zum Testen): cmd.exe als Admin ausführen, und von dort aus dein Programm starten.
PS: Fragt sich natürlich, ob das unbedingt nötig ist. Gerade in Unternehmenskontexten hat man oft gar keine Admin-Rechte. Das ist ein echtes Hindernis. Daher sollte man genau überlegen ob man die Daten nicht doch "normal" in Dateien ablegen kann. Auf einem Embedded-System auf FAT zuzugreifen ist machbar...
Programmierer schrieb: > Daher sollte man genau überlegen ob man die Daten nicht doch > "normal" in Dateien ablegen kann. Auf einem Embedded-System > auf FAT zuzugreifen ist machbar... "normal" in "" ist ein gutes Stichwort für einen Kompromiss :) Man nehme einen USB-Stick, formatiere den ganz normal mit FAT und schreibe unter Windows eine einzige große Datei drauf. Der Inhalt ist egal, er muss nur definiert sein. Man könnte mit notepad lauter Sterne reinschreiben. Auf dem Embedded-System wird diese Datei mit den Nutzdaten überschrieben, und zwar nur die Datei selbst, die Metadaten bleiben unverändert. Man braucht also keine FAT-lib, man muss nur den Anfang dieser Datei suchen. Für den Windows User ist das hinterher wieder (immer noch) eine ganz normale Datei, nur das Datum ist veraltet. Wenn sie nicht vollständig mit Nutzdaten gefüllt wird, stehen am Ende noch die Sterne.
Bauform B. schrieb: > Man braucht also keine FAT-lib, man muss nur den Anfang dieser Datei > suchen. Der Anfang reicht nicht, die Datei kann über mehrere Cluster fragmentiert sein. Das Anlegen der Datei ist aber auch nicht soo kompliziert. Die FAT durchiterieren, freie Cluster finden, und voll schreiben. Wenn die Dateigröße zu Beginn bekannt ist, ist es ziemlich easy.
Programmierer schrieb: > Der Anfang reicht nicht, die Datei kann über mehrere Cluster > fragmentiert sein. Kurz vor dem Absenden stand in meinem Text noch "da der Stick frisch formatiert ist...". Wer hat das gelöscht?!
Bauform B. schrieb: > Kurz vor dem Absenden stand in meinem Text noch "da der Stick frisch > formatiert ist Naja, auch dann gibt es keine Garantie dass die Datei am Stück liegt. Ist also eher Pfusch sich darauf zu verlassen...
Programmierer schrieb: > Gerade in Unternehmenskontexten hat man oft gar keine Admin-Rechte Oder sogar überhaupt keinen Zugriff auf wechselbare Datenträger mehr...
Daten DIREKT auf einen USB-Stick zu schreiben ist grundsätzlich immer Gefährlich. Du kannst nicht jedes Bit Kontrollieren. Und wenn der User den Stick entfernt ist das Risiko hoch das dein Programm abkackt. Ich persönlich würde die Daten auf der Platte ablegen. Dann eine Übertragungsroutine auf den Stick schreiben. Und via File-Len o.ä. abfragen ob die Datei vollständig übertragen wurde. In der Zeit sieht der User hat ein Fenster "Daten werden zum Stick übertragen". Und File-Copy Befehle sind i.d.R. NICHT so kritisch wie Direkt-Zugriff. Notfalls kann der User die Anweisung bekommen die Daten selbst von Hand zu kopieren. Dann hat er entweder über den Explorer Zugriff oder halt nicht und voll die Popo-Karte. ;)
Schlaumaier schrieb: > Dann hat er entweder über den Explorer Zugriff oder halt nicht und voll > die Popo-Karte. ;) Und wie schreibt man im Explorer am Dateisystem vorbei direkt auf die Karte? Richtig, gar nicht. Schlaumaier schrieb: > Und via File-Len o.ä. abfragen ob die Datei vollständig übertragen > wurde. Wenn man ohne Dateisystem arbeitet, gibt es auch keine Dateigröße.
Schlaumaier schrieb: > Daten DIREKT auf einen USB-Stick zu schreiben ist grundsätzlich immer > Gefährlich. > > Du kannst nicht jedes Bit Kontrollieren. Warum nicht? > Und wenn der User den Stick entfernt ist das Risiko hoch das dein > Programm abkackt. Und warum sollte das bei einer regulären Datei anders sein? Da ist es sogar noch zusätzlich so, dass das Dateisystem beschädigt werden kann.
Rolf M. schrieb: > Und warum sollte das bei einer regulären Datei anders sein? Da ist es > sogar noch zusätzlich so, dass das Dateisystem beschädigt werden kann. Beim Stick ohne Dateisystem kann natürlich selbiges nicht beschädigt werden. Dafür aber die Daten. Nur bmerkte man es dann ggf. gar nicht ohne weiteres. Es gibt noch einen Fallstrick beim Verwenden eines USB-Sticks ohne Dateisystem: Sobald man den an einen PC anschließt, kommt (weil das Mounten fehlschlägt) die Meldung (sinngemäß) "Dieser Datenträger muß vor Verwendung formatiert werden" und das Formatieren wird praktischerweise auch gleich per im Dialog angeboten. Da ist ein unerfahrener Benutzer nur einen Mausklick von der Katastrophe entfernt... Oder ein Kollege, der einen Stick sucht und diesen findet. Der denkt sich "ah, der Stick ist unbenutzt, kann ich also nehmen und formatieren..." Wenn es denn unbedingt die schräge Verwendung ohne Dateisystem sein soll, würde ich den Stick zumindest partitionieren. Dann ist vorne ein normales Dateisystem drauf, das auch gleich eine README.txt mit Hinweisen sowie die Zugriffs-Software für das Auslesen der RAW-Daten aus dem Bereich hinter dieser Partition enthalten kann. Die Startadresse des unpartitionierten Bereiches kann die Software, die die RAW-Daten schreiben soll, aus der Partitionstabelle ermittelm.
Ist aber alles ziemlicher Pfusch, einen Datenträger ohne Dateisystem nutzen zu wollen, da man ja auf irgendeine Weise zumindest rudimentär die ein oder andere Funktion eines Dateisystems implementieren muss... Zumindest sollte für das Auslesen irgendwie erkennbar sein, wieviele Nutzdaten überhaupt geschrieben wurden... Sonst liest man x GB (oder wie groß der Stick auch immer sein mag) an RAW-Daten aus, nur um dann beim Auswerten festzustellen, dass nur das erste KiloByte Daten enthält. Ich vermute mal, daß die Daten von irgendeinem MicroController auf den Stick geschrieben werden sollen und sich dessen Programmierer das Dateisystem ersparen wollte... Kann man aber auch das FatFS von Elm Chan verwenden, dann hat man ein Dateisystem auf dem Stick. Das erspart einem einige Probleme und man kann auch teilbeschriebebe Sticks zur Datenerfassung nutzen, ohne das Risiko, Daten zu verlieren.
Thorsten S. schrieb: > Rolf M. schrieb: >> Und warum sollte das bei einer regulären Datei anders sein? Da ist es >> sogar noch zusätzlich so, dass das Dateisystem beschädigt werden kann. > > Beim Stick ohne Dateisystem kann natürlich selbiges nicht beschädigt > werden. Dafür aber die Daten. Das können sie aber mit Dateisystem ganz genauso. > Nur bmerkte man es dann ggf. gar nicht ohne weiteres. Da kann eine CRC abhelfen. > Es gibt noch einen Fallstrick beim Verwenden eines USB-Sticks ohne > Dateisystem: Sobald man den an einen PC anschließt, kommt (weil das > Mounten fehlschlägt) die Meldung (sinngemäß) "Dieser Datenträger muß vor > Verwendung formatiert werden" und das Formatieren wird praktischerweise > auch gleich per im Dialog angeboten. Da ist ein unerfahrener Benutzer > nur einen Mausklick von der Katastrophe entfernt... Das ist ein Problem von Windows. Wenn es nicht weiß, was drauf ist, bietet es dem Benutzer aktiv an, erst mal alles platt zu machen… Konzeptfehler. Eine potenziell so gefährliche Aktion bietet man nicht einfach so nebenher an. > Oder ein Kollege, der einen Stick sucht und diesen findet. Der denkt > sich "ah, der Stick ist unbenutzt, kann ich also nehmen und > formatieren..." Hast du solche Kollegen? Ich würde jemanden, der einfach so ohne zu fragen von meinem Platz einen ihm unbekannten Stick wegnimmt und formatiert, erst mal zur Sau machen. > Wenn es denn unbedingt die schräge Verwendung ohne Dateisystem sein > soll, würde ich den Stick zumindest partitionieren. Dann ist vorne ein > normales Dateisystem drauf, das auch gleich eine README.txt mit > Hinweisen sowie die Zugriffs-Software für das Auslesen der RAW-Daten aus > dem Bereich hinter dieser Partition enthalten kann. Das könnte man machen.
:
Bearbeitet durch User
Rolf M. schrieb: > Das können sie aber mit Dateisystem ganz genauso. Nicht wirklich. Bei einen normalen Stick ist der Stick mit FAT-32 formatiert. Dieses Dateisystem legt immer eine BACKUP-Datei an. Erst wenn das File-System sagt "Schreiben beendet" wird das alte Fat-Backup gegen das aktuelle_FAT_system ersetzt. Es kennen vielleicht einige den Effekt aus alten Zeiten. Man kopiert eine Datei auf den Stick und sie ist nicht da. Das liegt genau an diesen Vorgang. Weshalb MS in den höheren Versionen das File-Puffer-System für Externe Datenträger abgeschaltet hat. Das führt dazu das Windows zwar "Früher" + schneller schreibt. Aber bei lahmen Sticks es trotzdem zu den Fehler kommen kann. Ich habe ein Stick mit einer LED dran. Da sehe ich oft das die noch flackert obwohl MS meldet alles OK. Und wehe ich ziehe den Stick ab, bevor die LED aufhört zu flackern.
Schlaumaier schrieb: > Rolf M. schrieb: >> Das können sie aber mit Dateisystem ganz genauso. > > Nicht wirklich. Doch, wirklich. Daten in Dateien können genauso fehlerhaft sein wie Daten, die ohne Datei direkt auf dem Datenträger liegen. > Bei einen normalen Stick ist der Stick mit FAT-32 formatiert. Dieses > Dateisystem legt immer eine BACKUP-Datei an. Nein, so etwas tut es nicht. Es gibt aber einige Programme, die das tun, um eben zu vermeiden, dass man nachher mit einer kaputten Datei da steht.
Rolf M. schrieb: > Nein, so etwas tut es nicht. Doch tut es. Aber NICHT von der Datei. Sondern von den FAT-System. https://de.wikipedia.org/wiki/File_Allocation_Table Zitat der Quelle : Bootsektor Der Bootsektor kann x86-Maschinencode (Bootloader) enthalten, der das Betriebssystem laden soll. An anderen Stellen enthält er Informationen über das FAT-Dateisystem. Anzahl der FAT-Kopien (in der Regel: 2) Wie schon gesagt. In der Praxis mehr als 1 x passiert, das ne Kopie nicht wirklich da war. Weil die Fat-Tabelle nicht aktualisiert wurde. Und ich habe auch einige Male so formatierte !!! Sticks wieder hergestellt. Schnellformatierung löscht nämlich nur die FAT und schreibt ne neue. Das Backup (die Kopie) ist noch da.
Mit Bordmitteln von WIN oder LINUX geht da nichts. Ich habe mal versucht, eine HD von einem Überwachungsmonitor auszulesen. WIN sowieso nicht. Unter LINUX alle möglichen Dateiformate, auch uralte, anzuwenden. Half nichts. Auch TV-Aufzeichnungen sind ähnlich.
Schlaumaier schrieb: > Anzahl der FAT-Kopien (in der Regel: 2) Wir sprechen hier vom Dateiinhalt, nicht von der FAT.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.