Code de vérification des autorisations en écriture pour les répertoires sous Win2K / XP
-
10-07-2019 - |
Question
Salutations!
J'essaie de vérifier les autorisations d'écriture des répertoires à partir d'un programme Windows MFC / ATL à l'aide de C ++. Ma première hypothèse est d’utiliser la fonction _access C-standard, par exemple:
if (_access("C:\mydir", 2) == -1)
// Directory is not writable.
Mais apparemment, sous Windows 2000 et XP, _access ne peut pas déterminer les autorisations de répertoire. (c.-à-d. l'onglet Sécurité de la boîte de dialogue Propriétés lorsque vous cliquez avec le bouton droit de la souris sur un répertoire de l'explorateur). Existe-t-il donc un moyen élégant de déterminer les autorisations d'écriture d'un répertoire dans Windows 2000 / XP à l'aide de l'une des bibliothèques Windows C ++? Si oui, comment?
Merci
Evan
La solution
Vous pouvez appeler CreateFile avec l’accès GENERIC_WRITE pour vérifier ceci. http://msdn.microsoft.com/en-us /library/aa363858(VS.85).aspx
Ce n’est pas une bibliothèque C ++ mais elle a tout de même une élégance car elle fait ce que vous voulez ...
Autres conseils
Utilisez sec api. Vous pouvez demander sur Adv. Groupes de discussion api Win32: news: //194.177.96.26/comp.os.ms-windows.programmer.win32 où il a souvent été discuté (code C / C ++)
Il existe de nombreuses fonctions de sécurité Windows . , même si je n’appellerais pas leur utilisation particulièrement élégante. Je recommanderais GetNamedSecurityInfo comme solution générale, mais la solution CreateFile a une certaine simplicité et une certaine franchise que je peux également apprécier. :)