6 votes

Comment vérifier si un fichier peut être créé dans un répertoire donné sous MS XP/Vista ?

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 :

  1. 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% ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X