Test des droits des fichiers sous windows

Un ami a moi fait de la programmation C++ sous Windows et sous Unix (Solaris), pour un logiciel multiplateforme.

Il a eu recement un probleme pour tester les droits des fichiers, je cite:
le seul moyen fiable que j’ai trouve de tester les droits d’acces a un fichier est de faire l’open et de regarder si il marche : la fonction access est obsolete et ne prend pas en compte les vrais droits NTFS et le code Win32 qui verifie les droits NTFS ne prend pas en compte les vieux droits DOS qui trainent toujours dans les coins (notamment les bouts de disque en FAT32).
Apparemment, il a fouille un peu le net sans trouver de veritable solution.

Est ce que quelqu’un connait un moyen propre, en C++, pour tester les droits d’acces d’un fichier, quelque soit le type de partition utilise? (l’utilisation d’open est une MAUVAISE reponse )

Merci d’avance.

LoneWolf
Osons la portabilite.

[quote]Est ce que quelqu’un connait un moyen propre, en C++, pour tester les droits d’acces d’un fichier, quelque soit le type de partition utilise? (l’utilisation d’open est une MAUVAISE reponse )[/quote]Et pourquoi voulloir utiliser autre chose si open marche ?
Quel est le problème avec open ?

man 2 stat (et http://msdn.microsoft.com/library/default…_wstati64.asp)
?

J’ai fait il y a quelque temps une API .NET qui attaquait les ACL NTFS en encapsulant les fonctions Win32, ça marchait assez bien, surtout en lecture. Les problèmes étaient surtout en écriture où c’est facile de faire des conneries.
Quand aux “droits” DOS ou Fat, ça n’existe pas vraiment, à part l’attribut Read-Only.
Plus précisément, c’est quoi, le problème? C’est pour faire quoi?
C’est vrai que si c’est juste pour tester pour l’utilisateur courant, ouvrir le fichier sans le locker est souvent le plus simple.
Sous .NET, il y a aussi une API qui permet de tester directement pour l’utilisateur courant sans ouvrir le fichier, mais je suppose que .NET, ça n’ira pas, mmh?

bon, il avait deja vu stat, et il me dit ca:
C’est bien ca le probleme : c’est un vieux reste de l’epoque ou ils ont essaye de fournir des bouts de POSIX pour faire comme sous Unix. Mais il me semble que ce n’est plus du tout connecte au systeme reel de permissions du FS Windows.

Et quand aux recherches faites, il me dit ca:
Eh bien non seulement je n’ai pas trouve grand-chose, mais tout ce que j’ai trouve, sans aucune exception, fait au minimum 50 lignes de code imbitable avec une douzaine
d’appels systeme. Inimaginable.

Et c’est pas possible en .NET puisque ca doit etre portable sous Unix.
Quand a open, meme si c’est une solution, ca reste une solution plutot crade dans le sens ou c’est pas son but primaire, quand meme.

LoneWolf
Open or not open, telle est la question

d’apres MSDN, _access (et tout ses potes _taccess et _waccess) fonctionne correctement, sauf en ce qui concerne les repertoire sous NT et 2000 : la, il va toujours te dire que tu peux ecrire & lire. Mais sinon, ca ““devrait”” marcher .
Sinon oui, tu va devoir te creer une fonction _myaccess si tu veux avoir exactement les meme fonctionalites sour nux et sous win (qui a dit que le dev multiplateforme c’est fastoche, hein ? ).