Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Schreibschutz eines Wechselmediums auslesen (https://www.delphipraxis.net/181935-schreibschutz-eines-wechselmediums-auslesen.html)

himitsu 19. Sep 2014 19:53

AW: Schreibschutz eines Wechselmediums auslesen
 
Dein Compiler gibt nicht zufällig eine Warnung aus?
So vonwegen Result sei nicht initialisiert.

Delphi-Quellcode:
if GetVolumeInformation(...) then
  Result := Drive_Flags and FILE_READ_ONLY_VOLUME <> 0
else
  Result := False; // <<<<<<

// oder

Result := GetVolumeInformation(...) and (Drive_Flags and FILE_READ_ONLY_VOLUME <> 0);

Sir Rufo 19. Sep 2014 21:47

AW: Schreibschutz eines Wechselmediums auslesen
 
Alle die Windows für ganz schlau halten :mrgreen: schauen sich jetzt mal die Delphi-Referenz durchsuchenVcl.Dialogs.TFileDialogOption an und überlegen sich, warum es hier eine Option
Delphi-Quellcode:
fdoNoTestFileCreate
gibt ;)

Nach dem Auswerten der üblichen Verdächtigen, die einen Schreibschutz anzeigen, wird trotzdem eine Testdatei erzeugt um wirklich sicher zu sein, dass dort eine Datei erzeugt werden kann und man damit dort über Schreibrechte verfügt.

Und hier handelt es sich um einen gewrappten Dialog von Windows. Es ist also nicht verwerflich eine Testdatei zu erzeugen um die Schreibrechte in einem Verzeichnis zu überprüfen. Allerdings reicht ein simples MSDN-Library durchsuchenCreateFile aus. Wirklich schreiben muss man da nix.

himitsu 19. Sep 2014 22:14

AW: Schreibschutz eines Wechselmediums auslesen
 
Jupp, meistens ist das der einfachste Weg.


Es gibt nur gaaanz wenige und vorallem extrem seltene Sonderfälle, weswegen man das Verhalten auch deaktivieren kann.
- langsames Netzwerk, wo ein zusätzlicher Test ewig dauern kann
- WriteOnly-Berechtigungen
- ...

Letzteres kennen Einige vielleich noch, z.B. von Posteingangs-FTPs, wo man nur Schreibrechte besitzt, aber weder Löschen und vorallem nicht Lesen und meist auch nichtmal den Verzeichnisinhalt auflisten darf.
Und auch die NTFS-Berechtigungen erlauben sowas.

Blöd ist es z.B. wenn man eine Datei zum Test erstellt, Diese dann aber nicht mehr löschen oder mit den endgültigen Daten überschreiben darf. :stupid:
Oder revisionssichere Datenträger, wo man Geschriebenes nicht wieder löschen/überscheiben kann.

Truther 20. Sep 2014 19:53

AW: Schreibschutz eines Wechselmediums auslesen
 
@himitsu: Delphi 7 meckert da nicht.

Delphi-Quellcode:
Result := GetVolumeInformation(...) and (Drive_Flags and FILE_READ_ONLY_VOLUME <> 0);
Das ist wohl die beste Lösung. ;)

@Sir Rufo:

Meine Problemstellung war, dass ich den Schreibschutz von Wechselmedien bzw. Medien allgemein auslesen wollte. Ich hatte nicht vor auf Schreibschutz zu prüfen. Aber das wäre eine Alternative, jedoch keine auszureichende, da, wie himitsu schon erwähnt hat, beschränkte Rechte vorhanden sein können.

Mfg
-- Truther


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz