J'ai un code qui crée un ou plusieurs fichiers dans un répertoire spécifié par l'utilisateur. L'utilisateur peut indiquer un répertoire dans lequel il ne peut pas créer de fichiers, mais il peut le renommer.
J'ai créé un répertoire à des fins de test, appelons-le C:\foo
.
J'ai les permissions suivantes pour C:\foo
:
- Traverser le répertoire/Exécuter le fichier
- Suppression des sous-dossiers et des fichiers
- Suppression de
- Permissions de lecture
- Modifier les autorisations
- Prendre la responsabilité
Je n'ai aucune des permissions suivantes pour C:\foo
:
- Contrôle total
- Création de fichiers
- Création de dossiers
J'ai essayé les approches suivantes, jusqu'à présent :
os.access('C:\foo', os.W_OK) == True
st = os.stat('C:\foo') mode = st[stat.ST_MODE] mode & stat.S_IWRITE == True
Je pense que cela est dû au fait que je peux renommer le dossier, il est donc modifiable pour moi. Mais son contenu - non.
Quelqu'un sait-il comment écrire un code qui vérifiera pour un répertoire donné si l'utilisateur actuel a les droits pour créer un fichier dans ce répertoire ?
En bref - je veux vérifier si l'utilisateur actuel a Création de fichiers y Création de dossiers les permissions pour un nom de dossier donné.
EDIT : La nécessité d'un tel code découle du cas d'essai n° 3 du programme "Certifié pour Windows Vista", qui stipule :
- Pour réussir ce test, l'application ne doit pas permettre à l'utilisateur le moins privilégié d'enregistrer des fichiers dans le répertoire du système Windows.
Faut-il comprendre que l'application peut essayer d'enregistrer un fichier dans le répertoire du système Windows, mais qu'elle ne doit pas se planter en cas d'échec ? ou plutôt que l'application doit effectuer des contrôles de sécurité avant d'essayer d'enregistrer un fichier ?
Devrais-je cesser de m'inquiéter simplement parce que Windows Vista lui-même ne permet pas à l'utilisateur le moins privilégié d'enregistrer des fichiers dans %WINDIR% ?