Page 1 sur 1
[R] @UserProfileDir VS @OSVersion
Posté : mer. 11 juin 2014 16:27
par scorp84
Bonjour,
Je suis entrain de créer un programme de sauvegarde dans lequel l'utilisateur aura le choix de sauvegarder ses documents, ses images, ses vidéos, sa musique et son bureau en les sélectionnant via des cases à cocher.
Je voudrai être sûr que @UserProfileDir me donne bien les répertoires de l'utilisateur courant et ce :
- quel que soit l'OS (sur Windows 7, il est possible de rajouter des bibliothèques. Seront elles sauvegardées ou n'y aura-t-il que les liens ? Qu'en est-il de @UserProfileDir avec Windows 8 ?)
- quelles que soit les modifications apportées à la base de registre par l'utilisateur (possibilité d'avoir ses documents ou ses images dans des répertoires différents via HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders).
► Afficher le texte
Code : Tout sélectionner
Switch @OSVersion
Case "WIN_XP"
$uti_mesDocs=@UserProfileDir
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_mesDocs = ' & $uti_mesDocs & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_maMusique=@UserProfileDir & "\Ma Musique"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_maMusique = ' & $uti_maMusique & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_mesImages=@UserProfileDir & "\Mes Images"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_mesImages = ' & $uti_mesImages & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_mesVideos=@UserProfileDir & "\Mes Vidéos"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_mesVideos = ' & $uti_mesVideos & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_bureau=@DesktopCommonDir
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_bureau = ' & $uti_bureau & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Case "WIN_7"
$uti_mesDocs=@UserProfileDir
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_mesDocs = ' & $uti_mesDocs & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_maMusique=@UserProfileDir & "\Ma Musique"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_maMusique = ' & $uti_maMusique & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_mesImages=@UserProfileDir & "\Mes Images"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_mesImages = ' & $uti_mesImages & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_mesVideos=@UserProfileDir & "\Mes Vidéos"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_mesVideos = ' & $uti_mesVideos & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$uti_bureau=@DesktopCommonDir
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $uti_bureau = ' & $uti_bureau & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
EndSwitch
Merci d'avance pour vos réponses.
Amicalement.
BM
Re: [..] @UserProfileDir VS @OSVersion
Posté : mer. 11 juin 2014 19:46
par jguinch
Pour les modifications apportées par l'utilisateur, tu as la réponse : les chemins sont définis dans
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders.
Pour les bibliothèques c'est un peu plus compliqué car Windows les considère comme des fichiers redirecteurs (un peu comme des raccourcis) avec l'extension
.library-ms.
En fait, ce sont des fichiers XML qui sont stockés dans
%userprofile%\AppData\Roaming\Microsoft\Windows\Libraries. Edite un fichier pour voir à quoi ça ressemble...
Tu pourra récupérer les chemins en parsant chaque fichier : il suffit de récupérer les valeurs définies entre les balises URL (ex
<url>D:\musique</url>).
Attention, les chemins vers les dossiers systèmes sont définis avec une convention de nommage particulière, par exemple :
<url>knownfolder:{ED4824AF-DCE4-45A8-81E2-FC7965083634}</url> correspond au documents publics.
Tu pourras alors t'aider de
ce code.
Re: [..] @UserProfileDir VS @OSVersion
Posté : mer. 11 juin 2014 20:48
par scorp84
Bonsoir,
Merci (une fois de plus

pour ta réponse efficace et rapide.
Par contre, je n'arrive pas à accéder à ton lien.
J'ai essayé aussi de me connecter directement à
http://www.autoitscript.com/ mais j'obtiens une erreur 403.
Amicalement.
BM
Re: [..] @UserProfileDir VS @OSVersion
Posté : mer. 11 juin 2014 20:49
par jguinch
Ca fonctionne chez moi...

Re: [..] @UserProfileDir VS @OSVersion
Posté : mer. 11 juin 2014 21:02
par scorp84
Autant pour moi (j'étais connecté via un VPN et ça ne lui plaisait pas
Avec tout ça, j'ai de quoi faire
Encore merci.
Amicalement.
BM