![]() |
Herausfinden ob Festplatte/Wechselmedium schreibgeschutz hat
hi,
wie kann ich herausfinden ob eine Festplatte bzw. Wechselmedium(USB Stick) ein schreibschutz hat. Wenn ich z.B. eine Datei auf einem USB Stick schreibe welches Schreibgeschützt ist erhalte ich eine fehlermeldung. kann mir bitte jemand weiterhelfen? danke im voraus. |
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
Was willst du denn alles abprüfen?
- ob der Datenträger schreibgeschützt ist - ob die Datei schreibgeschützt ist - ob der Pfad durch die Rechtevergabe nicht beschreibbar ist - ob durch das Parent-Directory vererbte Rechte dir das Schreibrecht verweigern - ob der Account unter dem du läufst dies alles nicht darf - wenn es mal eine Netzwerkfreigabe ist: ob die Freigabe dir das Schreiben erlaubt - - "" -: ob es das Dateisystem hinter der Freigabe dir das Schreiben erlaubt - ob eine Gruppenrichtlinie dir das Schreiben verbietet... Da kommst du von eins ins Tausende. Deshalb: Versuche zu schreiben und wenn nicht, dann fang den Fehler ab und behandle ihn entsprechend und gebe dem Nutzer eine Meldung aus. |
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
z.B.:
Delphi-Quellcode:
.. es geht aber auch einfacher
const
sDevice = 'C:\'; sFileName = sDevice + 'tmp_EZ_%d.txt'; var hFile: THandle; sTempFileName: string; begin Randomize; sTempFileName := Format(sFilename, [Random(High(Integer))]); hFile := CreateFile(PAnsiChar(sTempFileName), GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_ALWAYS, 0, 0); if (hFile <> INVALID_HANDLE_VALUE) then begin ShowMessage('Habe schreibrechte..' + sTempFileName); CloseHandle(hFile); DeleteFile(sTempFileName); end else ShowMessage('Keine schreibrechte ' + sTempFileName); |
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
GetDiskFreeSpaceEx ist 0, wenn man das Medium nicht beschreiben kann.
|
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
Zitat:
|
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
Zitat:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var FreeAvailable, TotalSpace, TotalFree: TLargeinteger; begin // Get the free drive space GetDiskFreeSpaceEx('Z:\', FreeAvailable, TotalSpace, @TotalFree); ShowMessage('Drive Z has ' + IntToStr(FreeAvailable div 1024) + 'Kb of free space'); end; |
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
herzlichen dank an alle antwortenden,
Ihr habt mir weitergeholen! @ErazerZ: ich hab mal deinen code verwendet, das war genau was ich suchte, nochmal thx! @Muetze1: Dein Beitrag ist super, ich finds gut das es so umfassendt ist, ich hatte mir ja garnicht gedanken drüber gemacht welche Ausnahmen es geben könnte! Daher ist deine Antwort inspirierend! Jedoch reicht mir erstmal nur ne einfach abfrage über datei- handles da ich nur Festplatten und Wechselmedien betrachten wollte! |
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
Zitat:
|
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
Ein Provisorium! Schreib einfach eine Funktion mit dem Laufwerk als Paramiter und Boolean als Rückgabewert. In der Funktion intergrierst Du paar Zeilen mit denen Du versuchst eine ein Byte große Datei auf dem Laufwerk zu speichern. Überprüfe ob es geklappt hat. Wenn nicht, dann hast Du entweder keine Rechte drauf zu schreiben, das Laufwerk ist schreibgeschützt oder einfach bis auf den letzten Byte voll. Wie auch immer, du weißt ob du dort schreiben kannst. Achja, lösche dann wieder die Testdatei.
|
Re: Herausfinden ob Festplatte/Wechselmedium schreibgeschutz
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 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-2025 by Thomas Breitkreuz