@hathor Danke, jetzt wird keine
Exception mehr ausgelöst.
Jedoch ist der Wert False, wenn ich den Stick mit dem Schreibschutz-Schalter einstecke und das Programm ausführe. Das Problem hatte
himitsu ja schon angesprochen. Es ist wohl nur von der Hardware-Seite schreibgeschützt, kann jedoch von der Software-Seite ausgelesen werden.
Woher weiß dann Windows, ob der Datenträger beschreibbar ist? Allein im Kontext-Menü fallen doch Schreib-Aktionen (Löschen, Ausschneiden) weg. Das wird doch wohl nicht alles über Exceptions laufen, oder?
Die Lösung mit GetVolumeInformation und FILE_READ_ONLY_VOLUME ist die, die mir geholfen hat.
Hier ist der Code, um diese Eigenschaft auszulesen:
Delphi-Quellcode:
function IsDriveWriteProtected(Drive: Char): Boolean;
const
FILE_READ_ONLY_VOLUME = $00080000;
var
Drive_Flags: DWORD;
begin
if GetVolumeInformation(PChar(Drive + ':\'), nil, 0, nil, DWORD(nil^), Drive_Flags, nil, 0) then
begin
Result := ((Drive_Flags and FILE_READ_ONLY_VOLUME) = FILE_READ_ONLY_VOLUME)
end;
end;
Hier der Code, den ich als Vorlage genommen habe:
http://www.delphipraxis.net/41824-pr...formation.html
Ich danke euch allen, für eure Beiträge.
MfG
-- Truther