Autor Beitrag
idefix123456
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 10.09.10 13:43 
Hallo,

Ich suche Jetzt schon über eine Stunde bei Google und finde einfach nichts! Ist bestimmt ganz einfach, weil ich will eigentlich nur feststellen ob eine Festplatte, Externe Festplatte, oder USB Stick schreibgeschützt ist oder nicht!

Dabei will ich nicht feststellen, ob jede einzelne Datei vom Windows aus als Schreibgeschützt markiert wurde, noch will ich Irgendwelche Schreibrechte setzen!
Ich beziehe mich eher darauf das ein USB Stick / Externe Festplatte via Externem Schreibschutz Schalter Schreibgeschützt gestellt wird bzw. Das ein gemountetes Laufwerk via TrueCrypt (Verschlüsselungsprog) ebenfalls Schreibgeschützt ist oder nicht!

Bei google hab ich NUR dieses script gefunden!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function check_hdd_if_readable(dev: string): Boolean;
  var
    hFile: THandle;
    FileName: string;
begin
  Randomize;
  FileName := Format(PChar(dev + 'tmp_EZ_%d.txt'), [Random(High(Integer))]);
  hFile := CreateFile(PChar(FileName), GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_ALWAYS, 00);
  if (hFile <> INVALID_HANDLE_VALUE) then begin
    result := true;
    CloseHandle(hFile);
    DeleteFile(FileName);
  end
  else result := false;
end;


Ansich nicht schlecht, denn es wird versucht eine Datei auf die HDD / Stick zu schreiben, wenn das nicht geht, dann muss wohl der Datenträger schreibgeschützt sein!

Allerdings funktioniert das ganze nicht richtig! Denn wenn Windows wieder mit seinen Benutzerrechten alles durcheinander bringt, liefert diese möglichkeit auch false Also Datenträger Schreibgeschützt, selbst wenn ich über den Explorer dateien draufkopieren kann!


Gibt es dafür denn keine Einfache Funktionsfähige von Delphi schon integrierte Funktion die einfach nur überprüft, Datenträger Schreibgeschützt, JA oder NEIN!


Währe dankbar über eine Antwort!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.09.10 17:05 
Von Delphi selbst gibt es sowas ganz bestimmt nicht, wenn, dann ist sowas in der Windows API zu finden.

Wenn ich zu Hause bin und etwas Zeit habe, schaue ich mal. Du kannst ja auch in der MSDN Doku mal schauen, ob du da nicht etwas findest, für ganze Datenträger vielleicht auch über WMI.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Fr 10.09.10 17:37 
Ich schätze mal du hast den Code von hier: www.delphipraxis.net...eibgeschutz-hat.html

Dort steht doch auch im 4. Beitrag etwas:
Zitat:

GetDiskFreeSpaceEx ist 0, wenn man das Medium nicht beschreiben kann.


Und zwei Beiträge weiter unten ist noch ein Beispiel.

Edit: Das funktioniert bei mir:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TmainForm.btnProofClick(Sender: TObject);
var
  FreeAvailable, TotalSpace, TotalFree: TLargeinteger;
begin
  if not GetDiskFreeSpaceEx('F:\', FreeAvailable, TotalSpace, @TotalFree)  then
    ShowMessage('Die Festplatte ist schreibgeschützt.')
  else
    ShowMessage('DIe Festplatte ist nicht schreibgeschützt.');
end;

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.