![]() |
Schreibrechte abfragen?
Hallo,
ich benutze ![]() Oder muss ich Schreibrechte für den Ordner prüfen, in dem die .bat Datei erstellt wird? :gruebel: |
Re: Schreibrechte abfragen?
|
Re: Schreibrechte abfragen?
Hm... kann damit leider nix anfangen :gruebel: Hat jemand vllt was anderes?
|
Re: Schreibrechte abfragen?
|
Re: Schreibrechte abfragen?
Oder muss ich Schreibrechte für den Ordner prüfen, in dem die .bat Datei erstellt wird? Grübelnd...
|
Re: Schreibrechte abfragen?
am einfachsten du prüfst nur, ob die Datei gelöscht werden darf.
die .bat kannst du ja im Windows-Temp-Verzeichnis anlegen |
Re: Schreibrechte abfragen?
Zitat:
Zitat:
![]() |
Re: Schreibrechte abfragen?
nee, du mußt schon prüfen, ob du löschen darfst
unter NTFS kann man - lesen - schreiben (in bestehende Dateien) - erstellen - löschen - ordnerinhalt auflisten - uvm. einzeln regeln PS: wenn es sich um ein Setup handelt, könntest du diesem ein passendes Manifest mitgeben, damit es Adminrechte bekommt. Zitat:
C:\Dokumente und Einstellungen\User\Lokale Einstellungen\Temp und dort solltest du alle nötigen Rechte für haben. |
Re: Schreibrechte abfragen?
Wie ist das eigentlich mit Desktop und Eigene Dateien? Hat man da Schreib- u. Löschrechte, bestimmt, oder?
|
Re: Schreibrechte abfragen?
Auf seinem eigenen Desktop und in seinen eignen Dateien hat der Benutzer natürlich alle Rechte. Aber da möchte ich keine Dteien rumfliegen haben von irgendwelchen Programmen. Auf den Desktop gehören nur von mir erstellte Links (zusätzlich zu denen die das System dort ablege) und die eigenen Dateien gehören nur Dateien, die ich dort speichere.
|
Re: Schreibrechte abfragen?
Also mit der Userrights Beispiel kommst du nicht weiter.
Der Quelltext von Nico funktioniert in Vista oder neuer nicht immer korrekt, da kein Integrity Label überprüft wird. Was machen? Das mal ausprobieren.
Delphi-Quellcode:
var hFile : THandle;
hFile := CreateFile(PChar(filename), DELETE, 0, nil, OPEN_EXISTING, 0,0); if (hFile = INVALID_HANDLE_VALUE) then begin if GetLastError() = ERROR_ACCESS_DENIED then ... if GetLastError() = ERROR_FILE_NOT_FOUND then ... end else CloseHandle(hFile); |
Re: Schreibrechte abfragen?
Code:
das geht aber nicht so ... GetLastError setzt den Fehlerwert zurück, wen es aufgerufn wird.
[s] if GetLastError() = ERROR_ACCESS_DENIED then ...
if GetLastError() = ERROR_FILE_NOT_FOUND then ... [/s] |
Re: Schreibrechte abfragen?
Zitat:
Auch wenn der Hinweis auf ein case-of oder eine lokale Variable natürlich berechtigt ist, da der thread-bezogene Fehlercode durch nachfolgenden Code überschrieben werden könnte. |
Re: Schreibrechte abfragen?
Das "..." ruft zum Denken auf! :"Wie geht es hier weiter?" Bedenklich wäre es doch, wenn man nur Copy&Paste macht. Meine geposteten Codes haben daher gerne mal einen unabsichtlichen Fehler drin, der gefunden werden muss. Wir sind doch schließlich alle nur Menschen, nicht wahr? :thumb:
|
Re: Schreibrechte abfragen?
Ganz sicher?
Delphi-Quellcode:
SetLastError(123);
MessageDlg(IntToStr(GetLastError), mtInformation, [mbOK], 0); MessageDlg(IntToStr(GetLastError), mtInformation, [mbOK], 0); Zitat:
Zitat:
|
Re: Schreibrechte abfragen?
MessageDlg ruft intern Windows API Funktionen auf. Davon wird die eine oder andere den Wert auf 0 setzen. Das sollte zwar so nicht sein, weil API Funktionen normalerweise bei Erfolg den Fehlercode einfach stehenlassen, das ist aber nicht immer so.
Vllt macht es die MessageDlg Fkt auch selbst. |
Re: Schreibrechte abfragen?
ok, geb mich geschlagen ... schön das mal geändert zu wissen, es es dann die ganze Zeit falsch im Kopf :oops:
Delphi-Quellcode:
Var E1, E2: LongWord;
begin SetLastError(123); E1 := GetLastError; E2 := GetLastError; SetLastError(123); MessageDlg(Format('%d %d', [E1, E2]), mtInformation, [mbOK], 0); MessageDlg(IntToStr(GetLastError), mtInformation, [mbOK], 0); |
Re: Schreibrechte abfragen?
Wir sind doch schließlich alle nur Menschen, nicht wahr? :wall:
|
Re: Schreibrechte abfragen?
Jetzt verstehe ich überhaupt nix :gruebel: Kann mir jemand eine klare Antwort geben? :roteyes:
|
Re: Schreibrechte abfragen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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