AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Floppy schreibschutz an oder aus?

Ein Thema von Meflin · begonnen am 12. Mär 2004 · letzter Beitrag vom 6. Okt 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 18:48
wie lässt sich das am einfachsten rausfinden?
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 19:02
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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 19:03
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.
  Mit Zitat antworten Zitat
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#4

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 19:32
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;
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#5

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 20:27
mit DeviceIoControl() und IOCTL_DISK_IS_WRITABLE sollte das gehen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 20:29
Aber vorsicht, da gibt es wieder unterschiedliche Implementierungen bei NT ff. und Consumer Windows.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#7

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 20:41
Ich erkenne das "Consumer Windows" nicht als Betriebssystem an
ich gehe davon aus, dass der Code nur auf NT-Systemen funktionieren soll
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#8

Re: Floppy schreibschutz an oder aus?

  Alt 12. Mär 2004, 21:08
Delphi-Quellcode:
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;
ungetestet! hab leider kein Floppylaufwerk hier.
Drive 0 = A:, 1 = B:, 2 = C:, etc...
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: Floppy schreibschutz an oder aus?

  Alt 13. Mär 2004, 09:59
vielen dank. werds mal ein bisschen durchtesten!
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#10

Re: Floppy schreibschutz an oder aus?

  Alt 5. Okt 2006, 12:54
@Alle
Zum obigen Code: Funktioniert nicht!

Ich habe mit der Zeile
Zitat:
Device := Format('\\.\%s:', ['D']);
mein CD Laufwerk angesprochen. Prima: Meldet schreibgeschützt. Aber meine beschreibare Festplatte leider auch.

Delphi-Quellcode:
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;
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.

Delphi-Quellcode:
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;
Vorerst habe ich es mit IsDriveWritable gelöst. Besser ist es natürlich zu wissen, was für einen Datenträger man hat:ListDrives Torry und dann IsDriveWritable aufruft.

Wer hat was zusammengestoppselt, was funktioniert?
Beste Grüße Go2EITS
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 02:35 Uhr.
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