![]() |
Floppy schreibschutz an oder aus?
wie lässt sich das am einfachsten rausfinden?
|
Re: Floppy schreibschutz an oder aus?
Hi,
da es auf dem Datenträger steht und (AFAIK) sich nicht einlesen lässt, würde ich vorschlagen einfach versuchen eine Datei zu erstellen und wenn das fehlt schlägt einfach vermuten dass der Schreibschutz aktiv ist. ;) Chris |
Re: Floppy schreibschutz an oder aus?
Früher, in alten TurboPASCAL-Zeiten, habe ich versucht, temporär eine Datei auf der Disk anzulegen.
Wenn das ging, gab´s keinen Schreibschutz. ;) Edit: Hm, da war der Chakotay schneller. |
Re: Floppy schreibschutz an oder aus?
wenn die floppy noch nicht formatiert wurde, dann nützt dieses verfahren recht wenig.
was anderes fällt mir aber auch nicht ein :(
Delphi-Quellcode:
function WriteProtected: Boolean;
var H: DWord; begin Result := False; H := CreateFile(PChar('A:\1_dd_fg_666_4423_4.dojwq'), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0); Result := (H = INVALID_HANDLE_VALUE); CloseHandle(H); end; |
Re: Floppy schreibschutz an oder aus?
mit DeviceIoControl() und IOCTL_DISK_IS_WRITABLE sollte das gehen.
|
Re: Floppy schreibschutz an oder aus?
Aber vorsicht, da gibt es wieder unterschiedliche Implementierungen bei NT ff. und Consumer Windows.
|
Re: Floppy schreibschutz an oder aus?
Ich erkenne das "Consumer Windows" nicht als Betriebssystem an :P :lol:
ich gehe davon aus, dass der Code nur auf NT-Systemen funktionieren soll ;-) |
Re: Floppy schreibschutz an oder aus?
Delphi-Quellcode:
ungetestet! hab leider kein Floppylaufwerk hier.
function IsDriveWritable(Drive: Integer): Boolean;
const IOCTL_DISK_IS_WRITABLE = ( ($00000007 shl 16) or (0 shl 14) or ($0009 shl 2) or 0); var Device: String; hFile: THandle; BytesReturned: Cardinal; begin Result := false; Device := Format('\\.\%s:', [Char(Drive + 65)]); hFile := CreateFile(@Device[1], GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if hFile <> 0 then begin Result := DeviceIoControl(hFile, IOCTL_DISK_IS_WRITABLE, nil, 0, nil, 0, BytesReturned, nil); CloseHandle(hFile); end; end; Drive 0 = A:, 1 = B:, 2 = C:, etc... |
Re: Floppy schreibschutz an oder aus?
vielen dank. werds mal ein bisschen durchtesten!
|
Re: Floppy schreibschutz an oder aus?
@Alle
Zum obigen Code: Funktioniert nicht! Ich habe mit der Zeile Zitat:
Delphi-Quellcode:
Mit dem nachfolgendem Beispiel funktioniert es zumindestens auf CD ROMS und Festplatten: Aber auf eine Diskette, die schreibgeschützt ist, kommt eine dicke Fehlermeldung, wie immer, wenn auf Laufwerk A: geschreiben werden soll.
function IDW(Drive: Integer): Boolean;
const IOCTL_DISK_IS_WRITABLE = ( ($00000007 shl 16) or (0 shl 14) or ($0009 shl 2) or 0); var Device: String; hFile: THandle; BytesReturned: Cardinal; begin Result := false; //Device := Format('\\.\%s:', [Char(Drive + 65)]); //Original! Device := Format('\\.\%s:', ['D']); //Zum Testen von Laufwerk D etc. hFile := CreateFile(@Device[1], GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if hFile <> 0 then begin Result := DeviceIoControl(hFile, IOCTL_DISK_IS_WRITABLE, nil, 0, nil, 0, BytesReturned, nil); CloseHandle(hFile); end; end;
Delphi-Quellcode:
Vorerst habe ich es mit IsDriveWritable gelöst. Besser ist es natürlich zu wissen, was für einen Datenträger man hat:
function IsDriveWritable(Drive: Integer): Boolean;
const IOCTL_DISK_IS_WRITABLE = ( ($00000007 shl 16) or (0 shl 14) or ($0009 shl 2) or 0); var Device: String; hFile: THandle; BytesReturned: Cardinal; begin Result := false; Device := Format('\\.\%s:', [Char(Drive + 65)]); hFile := CreateFile(@Device[1], GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if hFile <> 0 then begin Result := DeviceIoControl(hFile, IOCTL_DISK_IS_WRITABLE, nil, 0, nil, 0, BytesReturned, nil); CloseHandle(hFile); end; end; ![]() Wer hat was zusammengestoppselt, was funktioniert? Beste Grüße Go2EITS |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz