2009-07-06 7 views
0

J'ai un code qui utilise la fonction API Win RegSaveKeyEx pour enregistrer les entrées de registre dans un fichier. Cependant, RegSaveKeyEx renvoie ERROR_PRIVILEGE_NOT_HELD lorsqu'il est exécuté sur Win Vista ou Win 7. Le code active le privilège de sécurité SE_BACKUP_NAME en utilisant le code fourni par Microsoft dans la fonction exemple SetPrivilege.RegSaveKeyEx Nécessite une élévation?

Tout fonctionne très bien sous Win XP (administrateur) ou si je désactive UAC sous Win Vista ou Win 7. Est-il impossible d'utiliser RegSaveKeyEx sous Vista sans élever le processus?

Répondre

1

Les utilisateurs standard n'ont pas le privilège SE_BACKUP_NAME, donc non, RegSaveKeyEx ne fonctionnera pas sur Vista sans élévation. La sauvegarde est l'un des privilèges les plus «dangereux»: elle vous permet de lire n'importe quoi sur le disque, indépendamment des listes de contrôle d'accès.

1

Vous pouvez donner la permission à l'utilisateur spécifique (ou groupe) en allant à ce qui suit ...

Control Panel-> 
    Administrative Tools-> 
    Local Security Policy-> 
     Local Policies-> 
     User Rights Assignment-> Back up files and directories (SE_BACKUP_NAME) 

... et en ajoutant l'utilisateur (ou groupe) que vous voulez. Ou vous pouvez ajouter les utilisateurs aux opérateurs de sauvegarde.

Mais, vous devriez être prudent ici. Voir grand commentaire ci-dessous par Michael.

+1

Je serais très prudent accordant le privilège de sauvegarde des utilisateurs - il leur permet de contourner les ACL pour toutes les opérations de lecture de fichiers. Cela signifierait qu'un utilisateur non privilégié serait capable de lire n'importe quoi sur le disque - même les données de mot de passe mises en cache. – Michael

Questions connexes