AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ShellExecute und schreibgeschütztes Medium
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute und schreibgeschütztes Medium

Ein Thema von Poolspieler · begonnen am 1. Jul 2012 · letzter Beitrag vom 2. Jul 2012
Antwort Antwort
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#1

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 01:08
Ich habe mal einen Filesystem Treiber geschrieben, in den Dokus stand etwas von Dateisystemtypen.
Der CDFS-Treiber hat zum beispiel keine Funktionen zum Schreiben ind ist auch so gekennzeichnet.

Die SD-Karte ist vermutlich FAT32 oder NTFS formatiert, also mit Schreibfunktion, welche nur durch den Schalter an der Karte selbst unterdrückt wird.

PS: versuch es mal mit Hier im Forum suchenCreateProcess
Delphi programming

Geändert von WM_CLOSE ( 2. Jul 2012 um 01:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#2

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 08:16
Bei NTFS wird z.B. das Datum/Uhrzeit des letzten Dateizugriffs gespeichert
und ich glaub im Windows 7-Treiber wurde dieses Verhalten wieder geändert.

Man braucht also nur eine Datei zu öffnen und es geschieht ein Schreibzugriff.


Zusammen mit der Aussage von WM_CLOSE (ups, jetzt ist mein Browser weg) könnte es da schon die Auswirkungen erklären.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 2. Jul 2012 um 08:18 Uhr)
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 09:55
Nochmal zur Erlklärung: Treiber sind im Grunde wie Klassen, die ein Interface implementieren.

zur Veranschauichung nehmen wir die Interfaces
IWritableFS
{
procedure WrieFile(...);
...
}
und
IReadableFS
{
procedure ReadFile(...);
}

NTFS implementiert beide Interfaces,
CDFS nur IReadableFS

Damit weiß Windows, ob es auf einem bestimmten FS schreiben kann.

Jetzt kommt die NTFS? formatierte SD-Karte. Windows sieht: NTFS->beschreibbar.
Aber die SD-Karte macht mit dem lock einen Strich durch die Rechnung.

Im Vista/7 Treiber für die SD-Karten wurde das problem scheinbar umgangen, indem die tatsächliche Beschreibbarkeit geprüft wird.

Mit CreateProcess müsste es eig. trotzdem gehen.
Delphi programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#4

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 10:13
Mir fällt auch grade ein, daß ich unter Windows 7 diesbezüglich auch noch keine Probleme bemerkt hab,
auch nicht bei USB-Sticks mit Schreibschutz, egal ob FAT32, ExtFAT oder NTFS.

(bei SD-Karten war ich noch nicht auf die Idee gekommen diese mit NTFS zu beschreiben, da die andere Hardware es eh nie verstanden hätte)


Eventuell solltest du es dann auch nochmal mit solchen USB-Sticks probieren, welche ebenfalls einen Schreibschutzschalter besitzen.



PS: Bei USB wird der Schreibschutz über den Controlerchip im USB-Stick geregelt (den man nur im abgezogenen Zustand umschalten sollte/darf) und je nach dem was dort für ein mistiger Controler verbaut wurde, teilt er dem Dateisystemtreiber ordnungsgemäß mit, ob dieses Medium beschreibbar ist.

Bei den SD-Karten drückt dieser Schalter einen Kontakt im Lesegerät, womit dann natürlich das Lesegerät darauf reagieren muß.
Es könnte also auch sein, daß einige Billiggeräte nicht drauf reagieren, bzw. es erklärt auch, warum einige zu straffe Kontakte gerne mal diesen Schalter beim Einschieben umstellen, was ich mal bei einer Fotokamera hatte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 10:45
Hallo Zusammen,
ich habe nochmal einige (viele) Tests gemacht.

Ergebnisse:
1. Das Problem tritt auch bei schreibgeschützten USB-Sticks auf
2. Ich habe zwei SD-Reader getestet
- einen im Laptop (Samsung) integrierten
- einen externen (getestet unter Win7 und WinXP)
--> bei beiden Readern ist das selbe Verhalten vorhanden
3. ich habe Freund Procmon mal mitlaufen lassen
--> himitsu hat recht. Es wird zuerst ein QueryBasicInformationFile und anschliessend SetBasicInformationFile durchgeführt. Bei SetBAsicInformationFile(CreationTime, LastAccessTime, etc.) kommt der Fehler
4. CreateProcess habe ich versucht, da bekomme ich aber viele Fehler - wahrscheinlich rufe ich den Befehl noch mit falschen Parametern auf - das werde ich im Forum aber mal nachlesen...


Viele Grüße,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#6

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 11:17
Es gibt für's NTFS scheinbar einen eine Einstellungsmöglichkeit, wo man solche Schreibaktionen deaktivieren kann.
Aber wie und wo, das weiß ich auch nicht.

Das ist mir mal untergekommen, beim Thema Windows auf Flash-Disk (noch vor den SSD, wo man eine Flash-Karte via IDE angeschlossen hat), oder als Live-System auf USB-Disk laufen zu lassen.
Da diese Speicher eine begrenzte Lebensdauer haben/hatten, was das Beschreiben betrifft, wurde damals irgendein "Hack" verwendet, welcher eben Jenes verhinderte.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 2. Jul 2012 um 11:20 Uhr)
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: ShellExecute und schreibgeschütztes Medium

  Alt 2. Jul 2012, 11:43
Hallo nochmal,
mit CreateProcess hat es funktioniert!

Die Seite http://www.delphi-treff.de/tipps/sys...createprocess/ ist ein recht gutes Beispiel für CreateProcess...

Viele Grüße,

Poolspieler

P.s.: Wegen dem Deaktivieren von Schreibaktionen: Das müßte aber wahrscheinlich im Betriebssystem gemacht werden... oder?
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz