Forum: PC-Programmierung [.net] - Auf "Rohen" Datenträger zugreifen - Admin Rechte erforderlich?


von Grauler (Gast)


Lesenswert?

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
von Programmierer (Gast)


Lesenswert?

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.

von Programmierer (Gast)


Lesenswert?

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...

von Bauform B. (bauformb)


Lesenswert?

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.

von Programmierer (Gast)


Lesenswert?

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.

von Bauform B. (bauformb)


Lesenswert?

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?!

von Programmierer (Gast)


Lesenswert?

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...

von Ergo70 (Gast)


Lesenswert?

Programmierer schrieb:
> Gerade in Unternehmenskontexten hat man oft gar keine Admin-Rechte
Oder sogar überhaupt keinen Zugriff auf wechselbare Datenträger mehr...

von Schlaumaier (Gast)


Lesenswert?

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. ;)

von Programmierer (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Thorsten S. (thosch)


Lesenswert?

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.

von Thorsten S. (thosch)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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
von Schlaumaier (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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.

von michael_ (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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
Noch kein Account? Hier anmelden.