Hallo!
Gibt es eine zuverlässige Möglichkeit zu prüfen ob das laufende Programm über die Zugriffsrechte für einen bestimmten Ordne oder eine Datei verfügt?
Der Hintergrund ist, dass ein Programm auf eine Systemdatei zugriffen soll für die Admin-Rechte notwendig sind. Wird das Programm mit User-Rechten gestartet und versucht die Datei in einem Stream zu öffnen führt dies zu einer Exception EFOpenError.
Wird das Programm hingegen mit Admin-Rechten gestartet gelingt der Zugriff. Dies gilt aber nur, wenn die Datei nicht in Verwendung ist. Dann scheitert der Zugriff ebenfalls mit der Exception EFOpenError.
An der Exception alleine kann ich also nur erkennen, dass der Zugriff gescheitert ist, aber nicht warum. Allerdings lautet die Nachricht der Exeption in beiden Fällen anders. Im ersten Fall wird "Zugriff Verweigert" angegeben und im zweiten "Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird".
Eine Unterscheidung wäre also möglich, der Meldungstext ist nicht wirklich zuverlässig und würde unter einem indischen Windows wohl anders lauten. Eine andere Methode die beiden Exceptions zu unterscheiden konnte ich bislang nicht erkennen. Gibt es also eine Funktion HabIchZugriffsrechte(Datei.xyz) die mir sagt ob der Zugriff an mangelnden Rechten scheitert?