Probleme mit Zugriffsrechten



  • Hallo zusammen,

    ich habe folgendes Problem:

    In einer Anwendung greife ich mit den API-Befehlen (CreateFile Function) auf eine serielle Schnittstelle zu. Die Funktionen habe ich in eine DLL ausgelagert, die ich in einer Anwendung verwende.

    Ich öffne die Schnittstelle mit folgendem Aufruf:

    ...
    DeviceHandle = CreateFile(DeviceName.c_str(),
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_DELETE,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_TEMPORARY|FILE_FLAG_DELETE_ON_CLOSE,
    NULL
    );
    ...

    Auf meinem persönlichen Rechner, auf dem ich lokaler Admin bin funktioniert dieser Aufruf.
    Öffne ich den Port auf einem Rechner ohne Admin-Rechte, erhalte ich eine Fehlermeldung "Access denied (Error 5).

    Diese Fehlermeldung lässt sich lösen indem ich die Schnittstelle mit folgenden Attributen öffne:

    ...
    DeviceHandle = CreateFile(DeviceName.c_str(),
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_DELETE,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_TEMPORARY,
    NULL
    );
    ...

    Dabei wird das Attribut "FILE_FLAG_DELETE_ON_CLOSE" weggelassen.
    Dieses muss also bei der Überprüfung von Rechten eine Rolle spielen.
    Ich kann den Zusammenhang momentan jedoch noch nicht durchschauen, hat jemand dazu eine Idee?

    Beide Rechner laufen mit dem Betriebssystem Windows XP um diese Info noch vorne weg zu schicken.

    MfG

    s'Programmierer


  • Mod

    Welchen Sinn macht bitte das Flag FILE_FLAG_DELETE_ON_CLOSE bei einem Port, dito FILE_ATTRIBUTE_TEMPORARY?

    Lass die Flags einfach weg.



  • Bezogen auf einen Port hast du da schon recht, das sind eher Vorgehensweisen bei Dateien, allerdings würde mich interessieren was das Flag FILE_FLAG_DELETE_ON_CLOSE bzgl. der Zugriffsrechte bewirkt.

    Eine Frage noch bzgl. Ports?
    Auf neueren Systemen wird der Zugriff auf Ports mit CreateFile() bewerkstelligt, früher waren direktere Zugiffe möglich (laut Hörensagen).

    Gibt es eine Möglichkeit hardwarenäher auf Ports zu zugreifen?

    Bzgl. der Flags, gibt es eine gute Beschreibung hinsichtlich der Zugriffe auf Ports (deutsch oder englisch), inklusive USB?

    Gruß

    LProgrammR



  • Seit NT war der Zugriff auf Ports nur via CreateFile möglich.

    Mit "früher" war wohl Win95 gemeint... das war ja aber auch noch DOS...

    Und vermutlich hängt es von den Treibern ab, wie sich das System mit so komischen Parametern verhält...


Anmelden zum Antworten