Page 1 sur 1

trouver dossier utilisateur

Publié : mar. 24/mai/2016 17:43
par blendman
salut

Dans certaines de mes applications, j'aimerai faire des sauvegardes (pref, etc...) dans le dossier utilisateur, histoire de partager ça entre les différentes versions sans devoir toujours réinstaller nos préférences ou d'autres options ^^.

Par exemple :
C:\Users\NOM_UTILISATEUR\AppData\Local\

Vous sauriez comment on peut le nom de l'utilisateur et le dossier AppData\Local\ ?
Est-il toujours sur C:\ ?

Merci :)

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 18:06
par case
%userprofile%\AppData\Local\

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 18:08
par GallyHC
Bonjour,

Avec un truc comme cela, je penses que tu peux trouvais ton bonheur.

Code : Tout sélectionner

Procedure.s GetSystemFolder(lvalue.l)
; ROUTINE DE RECHERCHE DES PATHS DU SYSTEME.
  Protected sfolder.s
  Protected *itemid.ITEMIDLIST = #Null

  If SHGetSpecialFolderLocation_(0, lvalue, @*itemid) = #NOERROR
    sfolder = Space(#MAX_PATH)
    If SHGetPathFromIDList_ (*itemid, @sfolder)
      If Right(sfolder, 1) <> "\"
        sfolder + "\"
      EndIf
      ProcedureReturn sfolder
    EndIf
  EndIf

EndProcedure

For i=0 To 256
  Debug Str(i) + " - " + GetSystemFolder(i)
Next i
Cordialement,
GallyHC

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 18:21
par blendman
Sinon, j'ai testé ça, ça a l'air de marcher :

Code : Tout sélectionner

Debug  GetHomeDirectory() +"AppData\Local\"
Qu'en pensez-vous ? :D

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 19:00
par Bernie
Pourquoi le mettre AppData\Local\?

il suffit de le mettre dans
C:\Users\NOM_UTILISATEUR\Documents


si le mets dans AppData\Local\ le répertoire est caché par défaut

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 19:21
par Marc56
GetHomeDirectory() te donnera la racine du répertoire utilisateur quelque soit le disque ou le nom.
C'est ça qui doit te servir de base.
Pour connaître les autres variables, tapes SET dans une fenêtre dos.
:wink:
Oups je n'avais pas vu que tu as déjà trouvé la réponse :mrgreen:

Local c'est pour les données qui restent sur le disque local
Roaming c'est si tu veux que les données soient accessibles via un éventuel reseau
Programme data c'est pour les données du programme lui même indépendament de l'utilisateur

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 19:45
par cage
Bonjour,

Une petite procédure que j'utilise si besoin.

Code : Tout sélectionner

Procedure getEnviron()
  Global AllUsersProfile$       = GetEnvironmentVariable("AllUsersProfile")
  Global AppData$               = GetEnvironmentVariable("AppData")
  Global CommonProgramFiles$    = GetEnvironmentVariable("CommonProgramFiles")
  Global CommonProgramFilesX86$ = GetEnvironmentVariable("CommonProgramFiles(x86)")
  Global CommonProgramW6432$    = GetEnvironmentVariable("CommonProgramW6432")
  Global ComputerName$          = GetEnvironmentVariable("ComputerName")
  Global HomeDrive$             = GetEnvironmentVariable("HomeDrive")
  Global HomePath$              = GetEnvironmentVariable("HomePath")
  Global LocalAppData$          = GetEnvironmentVariable("LocalAppData")
  Global ProgramData$           = GetEnvironmentVariable("ProgramData")
  Global ProgramFiles$          = GetEnvironmentVariable("ProgramFiles")
  Global ProgramFilesX86$       = GetEnvironmentVariable("ProgramFiles(x86)")
  Global ProgramW6432$          = GetEnvironmentVariable("ProgramW6432")
  Global PUBLIC$                = GetEnvironmentVariable("PUBLIC")
  Global SystemDrive$           = GetEnvironmentVariable("SystemDrive")
  Global SystemRoot$            = GetEnvironmentVariable("SystemRoot")
  Global TEMP$                  = GetEnvironmentVariable("TEMP")
  Global TMP$                   = GetEnvironmentVariable("TMP")
  Global Username$              = GetEnvironmentVariable("USERNAME")
  Global UserProfile$           = GetEnvironmentVariable("UserProfile")
  Global Windir$                = GetEnvironmentVariable("windir")

  Global System32$ = SystemRoot$ + "\System32\"
  
  Global etcHosts$   = System32$ + "drivers\etc\hosts"
  Global etcLmhosts$ = System32$ + "drivers\etc\lmhosts"

  If ProgramFilesX86$ = #Null$
    ProgramFilesX86$ = ProgramFiles$
  EndIf
EndProcedure ; getEnviron()

Re: trouver dossier utilisateur

Publié : mar. 24/mai/2016 19:51
par Ar-S
+1 cage

Re: trouver dossier utilisateur

Publié : mer. 25/mai/2016 12:05
par blendman
Merci Cage pour ta procédure ;)

Edit : en regardant, j'ai vu qu'on pouvait facilement les obtenir avec :

Code : Tout sélectionner

If ExamineEnvironmentVariables()
    While NextEnvironmentVariable()
      Debug EnvironmentVariableName() + " = " + EnvironmentVariableValue()
    Wend
  EndIf