Accéder aux dossiers de l'utilisateur en cours

Accéder aux dossiers de l'utilisateur en cours - C++ - Programmation

Marsh Posté le 18-08-2005 à 17:28:27    

Voilà mon problème,
 
Lorsque j'éxécute mon programme en tant qu'administrateur sous une session d'un utilisateur limité, j'aimerai retrouver les chemins des dossiers "Mes Documents", "Bureau", etc...
Seulement, si j'apelle la fonction SHGetSpecialFolderPath, je me retrouve avec les chemins correspondants à l'administrateur.
 
Quelqu'un à une idée ?

Reply

Marsh Posté le 18-08-2005 à 17:28:27   

Reply

Marsh Posté le 18-08-2005 à 17:33:09    

Exécute depuis le compte utilisateur...
Même si tu récupères le Mes Documents voulu, tu risques d'avoir d'autres problèmes genre c'est un document créé par l'Admin que le pauvre utilisateur ne peut ni lire ni effacer etc...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-08-2005 à 17:37:49    

Sauf que mon programme est en quelque sorte un Setup et que j'ai besoin d'accéder à :
 
Program Files et HKEY_LOCAL_MACHINE => c'est pour ça que j'éxécute sous admin
mais aussi HKEY_CURENT_USER, Mes documents, le bureau , etc... de l'utilisateur en cours
 
Je suis preneur pour une autre solution

Reply

Marsh Posté le 18-08-2005 à 23:38:33    

Alors regarde plutot dans Documents and Settings\All Users\Bureau.
Pour HKEY_CURENT_USER, normalement, c'est ton appli qui doit écrire dedans. Elle peut détecter son premier lancement si la clé voulue n'existe pas et faire son init. Voir aussi HKEY_USERS.

Reply

Marsh Posté le 19-08-2005 à 08:34:24    

J'ai trouvé la fonction GetUserProfileDirectory qui permet de retrouver la racine du profile d'un utilisateur. (C:\Documents and Settings\UserName\)
Pour l'utiliser, j'ai besoin du Token (HANDLE) de l'utilisateur !
Comment on le récupère ?
 
BOOL GetUserProfileDirectory(
  HANDLE hToken,
  LPTSTR lpProfileDir,
  LPDWORD lpcchSize
);

Reply

Marsh Posté le 19-08-2005 à 10:35:59    

Une fois que tu as le répertoire de son profile tu fais quoi ?
Bureau, Mes Documents, etc... ne sont pas obligés de s'appeler comme ça, d'être là où tu les attend, etc...
Pour le token, faut lire la doc. Faut connaitre le user dont il faut charger le profile (ce qui est logique), ainsi que son password pour LogonUser... Ou alors...
Honnêtement, je crois que tu te compliques beaucoup trop. Sans parler des pblm de sécurité.
Tu veux lancer ton setup depuis un compte non admin, ok, ça te regarde. Autant faire un soft prévu pour ça.
Je te propose:
- l'utilisateur non Admin exécute l'installeur normalement
- l'installeur détecte que c'est pas un Admin (IsUserAnAdmin)
- il affiche un message à l'utilisateur "vous êtres pas Admin etc...", et demande le login & mot de passe Admin
- il récupère les infos dont il a besoin (chemin vers Mes Docs, etc...)
- il s'auto-relance via CreateProcessWithLogonW en tant que Admin, en se donnant en paramètre les infos dont il a besoin (path...) ou bien un chemin vers un fichier temporaire qui contient ces infos.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed