| |
|
|
| Unter NT-basierenden Windowssystemen ist der Zugriff auf viele Handles durch sogenannte "Zugriffsrechte" beschränkt. Solche Zugriffsrechte geben an, in welcher Art und Weise ein User oder eine Gruppe genau auf ein Handle zugreifen darf. Beim Aufrufen der entsprechenden API zum Öffnen des jeweiligen Handles muß dann eine Zugriffsmaske übergeben werden, die genau festlegt in welcher Art und Weise man ein Handle öffnen und gebrauchen will (bei der API RegOpenKeyEx wäre das zum Beispiel der 4.Parameter der Funktion). Es wird dann intern vom OS überprüft, ob alle angegebenen Rechte dem aufrufenden User oder einer Gruppen, in der dieser User Mitglied ist, wirklich zustehen. Ist dies nicht der Fall, schlägt das Öffnen des Handles fehl.
Ein Problem: In welcher Art und Weise man überhaupt auf ein Handle zugreifen kann, hängt sehr stark von der Art des Handles ab (spezifische Rechte). Eine Datei besitzt so zum Beispiel Attribute, die man ändern kann - ein Registryschlüssel besitzt solche Attribute nicht. Welche Rechte (in diesem Fall) also genau für einen kompletten Schreibzugriff nötig sind, hängt vom vom Handle ab! Damit sich der Normalprogrammierer nicht dauernd neue Flags heraussuchen muß, gibt es die GENERIC Rechte. Diese Rechte werden automatisch von der entsprechenden API gemappt - also in deren spezifische Rechte (je nach Handle unterschiedlichen Rechte) und Standardechte (für alle Handles gleichen Rechte) umgesetzt. Es gibt:
GENERIC_READ | kompletter Lesezugriff
| GENERIC_WRITE | Schreibzugriff
| GENERIC_EXECUTE | Ausführen
| GENERIC_ALL | Vollzugriff |
Ob man die GENERIC Rechte beim Öffnen des Handles angibt oder die entsprechenden spezifischen Rechte spielt keine Rolle.
|
|
|
| |
|
|